Javascript 续集如何在单个表中选择child的子级?
我在postgresql数据库中有下表Javascript 续集如何在单个表中选择child的子级?,javascript,sql,node.js,postgresql,sequelize.js,Javascript,Sql,Node.js,Postgresql,Sequelize.js,我在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 |
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(食物的子代)的所有行,然后返回parentId
只要有孩子,就等于5,6(斯威特的孩子)等
它在单个where对象中可行吗
db.ItemGroup.findAll({
where: {
// query
}
});
您可以使用:
在这里,您必须这样定义模型:
var folder = sequelize.define('folder', {
name: Sequelize.STRING,
parentId: {
type: Sequelize.INTEGER,
hierarchy: true // <------- HERE
}
});
var folder=sequelize.define('folder'){
名称:Sequelize.STRING,
父ID:{
类型:Sequelize.INTEGER,
层次结构:真的//谢谢,真的很好的解决方案!
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' }
// ] }
// ] }
// ]
});