#mysql #arrays #json #string #knex.js
#mysql #sql #массивы #json #строка
Вопрос:
Привет, ребята, я использую knex с MySQL. Я хочу добавить скобки в свое поле. Я использую group_concat, но получаю ответ без скобок
knex('cardex').rightJoin('cardex_agelimit' , 'cardex.id' , 'cardex_agelimit.CardexId')
.select( knex.raw('group_concat( DISTINCT (ages.AgeTitle) ) as ages , group_concat( DISTINCT (days.DayName) ) as days '))
.then(data=>{ console.log(data) }).catch(err=>{})
и результат выглядит так :
{
"ages" : "Adult,Teenager"
"days" : "Mon,Tue"
}
но я ищу способ показать это как:
{
"ages" : ["Adult","Teenager"]
"days" : ["Mon","Tue"]
}
Есть идеи?
Ответ №1:
Вы можете вручную добавить квадратные скобки вокруг значений:
concat('[', group_concat(distinct ages.AgeTitle), ']') as ages,
concat('[', group_concat(distinct ages.DayName ), ']') as days
Но итог: если вам нужен вывод json, вы можете сгенерировать его непосредственно из базы данных — с одним ограничением, которое не поддерживают агрегированные функции json distinct
. Если это приемлемо для вас, то:
json_object(
'ages', json_arrayagg(ages.AgeTitle),
'days', json_arrayagg(ages.DayName)
)