gpt4 book ai didi

mysql - 克尼克斯/SQL : Merge one to many join in one object

转载 作者:行者123 更新时间:2023-11-29 15:15:12 27 4
gpt4 key购买 nike

我有两个表:“page”和“page_css”。我想要page和page_css之间是一对多的关系(一个页面包含多个page_css)。查看表结构:

页表结构: page table structure

Page_css表结构: page_csss_table_structure

这是我正在使用的 Knex 查询:

var page = knex('page')
.where({ slug: req.params.slug })
.join('page_css', { 'page_css.page_id': 'page.id' })
.then(function(page) {
if (page) {
return res.json(page);
}
return res.send('page not found');
});

这是我得到的结果:

enter image description here

但我想要这样的结果:

enter image description here

我需要运行什么 SQL/Knex 查询才能得到上面的格式?

最佳答案

Knex 无法施展魔法,它“只是”构建正确 SQL 查询的查询生成器。

您需要将这个平面结果转换为您希望的对象。

const flatData = [{
id: 1,
slug: 'test',
page_id: 1,
css_file: 'main'
}, {
id: 1,
slug: 'test',
page_id: 1,
css_file: 'hero'
}];

const resultMap = flatData.reduce((result, row) => {
result[row.id] = result[row.id] || {
...row,
css_file: []
};

result[row.id].css_file.push(row.css_file);

return result;
}, {});

console.log(Object.values(resultMap));

关于mysql - 克尼克斯/SQL : Merge one to many join in one object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59736466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com