gpt4 book ai didi

node.js - Node Sequelize 组

转载 作者:行者123 更新时间:2023-11-29 14:34:49 25 4
gpt4 key购买 nike

PostgreSQL 数据库。表:

Name  | equalId

name1 | 1
name2 | 2
name3 | 1
name4 | 2
name5 | 1

我想获得一个按 equalId 排序的对象数组。示例:

[
{equalId: 1, names: ['name1', 'name3', 'name5']},
{equalId: 2, names: ['name2', 'name4']},
]

我如何使用 sequelize 做到这一点?

我试过:

await db.name.findAll({
where: { equalId: { $not: null } },
attributes: ['equalId', 'name'],
order: ['name'],
group: ['equalId', 'name'],
raw: true,
logging: true,
});

但结果不正确。

最佳答案

从数据库中检索到结果后,您需要对其进行排序和分组。

db.name.findAll({
where: {equalId: {$not: null}},
attributes: ['equalId', 'name'],
order: ['equalId'],
raw: true,
logging: true
})
.then((items) => {
// get an object keyed by equalId with a value of an array of names
const names = items.reduce((names, item) => {
if (!names[item.equalId]) {
names[item.equalId] = [item.name];
} else {
names[item.equalId].push(item.name);
}
return names;
}, {});
// get an array of results from the object
const result = Object.keys(names).map((equalId) => {
return {
equalId: equalId,
names: names[key],
};
})
// resolve the result array
return Promise.resolve(result);
});

关于node.js - Node Sequelize 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46820449/

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