使用knex.raw在MySQL表的串联中进行串联

时间:2018-09-19 11:16:46

标签: mysql concatenation group-concat knex.js

我不知道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()=>函数中对数据库进行多次调用是否是一个坏主意...在某些情况下,它是一个坏主意。似乎不可避免?

0 个答案:

没有答案