Mysql Knex/SQL:在一个对象中合并一对多连接
我有两个表格:“page”和“page_css”。我想在页面和页面之间建立一对多的关系(一个页面包含多个页面)。 见表结构: 页表结构: Page_css表格结构: 这是我正在使用的Knex查询:Mysql Knex/SQL:在一个对象中合并一对多连接,mysql,sql,node.js,database,knex.js,Mysql,Sql,Node.js,Database,Knex.js,我有两个表格:“page”和“page_css”。我想在页面和页面之间建立一对多的关系(一个页面包含多个页面)。 见表结构: 页表结构: Page_css表格结构: 这是我正在使用的Knex查询: var page=knex('page') .where({slug:req.params.slug}) .join('page_css',{'page_css.page_id':'page.id'}) .then(功能)(第页){ 若有(第页){ 返回res.json(第页); } 返回res.
var page=knex('page')
.where({slug:req.params.slug})
.join('page_css',{'page_css.page_id':'page.id'})
.then(功能)(第页){
若有(第页){
返回res.json(第页);
}
返回res.send('未找到页面');
});
这就是我得到的结果:
但我想要这样的结果:
我需要运行什么样的SQL/Knex查询才能获得上述格式的查询?Knex不能变魔术,只有“公正”的查询生成器才能构造正确的SQL查询 您需要将此平面结果转换为所需的对象
const flatData=[{
id:1,
slug:'测试',
页码:1,
css_文件:“main”
}, {
id:1,
slug:'测试',
页码:1,
css_文件:“英雄”
}];
const resultMap=flatData.reduce((结果,行)=>{
结果[row.id]=结果[row.id]|{
一行
css_文件:[]
};
结果[row.id].css_文件.push(row.css_文件);
返回结果;
}, {});
log(Object.values(resultMap))代码>