gpt4 book ai didi

javascript - Sequelize 如何在单个表中选择 child 的 child ?

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

我在 postgresql 数据库中有下表

id | name       |active| parentId
--------------------------------
1 | food | true | null
2 | soft drink | true | 1
3 | canned food| true | 1
4 | sweet | true | 1
5 | candy | true | 4
6 | chocolate | true | 4
7 | chemical | true | null

如你所见,他们通过他们的 ID 与父子关系相关联

喜欢:食物 -> 甜食 -> 糖果、巧克力

我想用 sequelize 编写一个查询,它将返回父项和所有关联的子项。

假设我选择了food,查询应该返回所有parentId 等于id 1 的行,然后返回所有parentId 等于 2,3,4(食物的 child )的行,然后返回 parentId 的所有行等于 5,6(sweet 的 child )等,只要有 child 。

在单个 where 对象中是否可行?

db.ItemGroup.findAll({
where: {
// query
}
});

最佳答案

您可以使用: sequelize-hierarchy.js

在这里你必须像这样定义模型:

var folder = sequelize.define('folder', {
name: Sequelize.STRING,
parentId: {
type: Sequelize.INTEGER,
hierarchy: true // <------- HERE
}
});

我认为,这就是您要找的:

folder
.findAll({ hierarchy: true }) // <------- HERE
.then(function(results) {
// results = [
// { id: 1, parentId: null, name: 'a', children: [
// { id: 2, parentId: 1, name: 'ab', children: [
// { id: 3, parentId: 2, name: 'abc' }
// ] }
// ] }
// ]
});

您可以查看链接,这里有更多示例来展示您可以使用该库执行的操作。

NOTE : You can also do this without the plugin, but tit will be very length way , this is more cleaner.

关于javascript - Sequelize 如何在单个表中选择 child 的 child ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53362336/

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