Понятия не имею, способен ли Knex вообще поддерживать такую функцию.Я предполагаю, что ошибка ER_INVALID_GROUP_FUNC_USE
, которую я получаю, означает, что синтаксис (все запятые, кавычки и т. Д.) Правильный, но наличие одной функции concat внутри другой не поддерживается.Есть ли правильный подход к генерации такого типа возвращаемого объекта?
knex('a').select('a.*',knex.raw(
`CONCAT("{", GROUP_CONCAT(DISTINCT '"',b.b_id,'"',':','[',
'"',b.b_text,'"',",",
CONCAT("{", GROUP_CONCAT(DISTINCT
'"',c.c_id,'"',':','"',c.c_text,'"'),"}"),
"]"),"}")`
))
РЕДАКТИРОВАТЬ: просто для ясности вот как я хотел бы, чтобы возвращаемый объект выглядел для простого анализа JSON:
object = [{
a_id:'id',
a_text:'text',
b_list:{
b_id:[
b_text,
{c_id:c_text}
]
}
}]
Разве проще получить возвращенную таблицу A, а затем .then () =>, чтобы получить список b_list (хотя я бы предпочел, чтобы это был объект {}, а не массив []) и объединить с ним Cs??Я на самом деле довольно новичок в программировании sql, поэтому не очень понимаю компромиссы между одним подходом и другим - является ли плохая идея сделать несколько обращений к БД в последующих функциях .then () => ... в некоторых случаях этокажется неизбежным?