【发布时间】:2018-03-09 02:26:42
【问题描述】:
我为具有自我关联的人准备了一张桌子,这样人们就可以拥有父母/孩子/堂兄弟/等。
const People = sequelize.define('People', {
gender: Sequelize.STRING,
name: Sequelize.STRING,
age: Sequelize.INTEGER
})
const Relationships = sequelize.define('Relationships')
Items.belongsToMany(Items, { through: Relationships, as: 'relationships' })
我希望能够通过两种方式选择数据:
1。 选择一个 21 岁的人的所有关系
// Returns all of johns relatives who are 21
return People.findOne({
where: { name: 'John' },
include: [{
required: false,
model: Items,
as: 'relationships',
where: { age: 21 }
}]
})
2。 选择所有与 21 岁有亲属关系的人。这将需要接受多个查询,例如:选择所有有 21 岁或/和男性亲属的人。
有什么想法吗?
【问题讨论】:
-
您需要找到所有 21 岁和男性的人吗?如果您需要 OR,请尝试
where { age:21 , gender: 'Male'或使用 $ 或where: { $or [ {age: 21}, {gender:'Male'} ] } -
使用 People.findAll()
-
你能分享你定义自关联的代码吗?
-
Items.belongsToMany(Items, { through: 关系,as: 'relationships', foreignKey: 'field_name' })
标签: node.js postgresql sequelize.js