【发布时间】:2019-02-25 18:17:42
【问题描述】:
我有 5 个数据库表:
Template、Capability、Deployment、Level、Requirement
Template (PK) -> has many Capability (FK)
Capability (PK) -> has many Deployments (FK) && Capability has many Levels (FK)
Level (PK) -> has many Requirement (FK)
我想检索所有模板,以及相关的外键一直到需求。
但是,我想将关卡的数量限制为仅未删除的关卡 (isDeleted : false)。
如果检索到了 DATA,则此方法有效,但如果没有根据 Where (isDeleted) 从 Levels 表返回的记录,Sequelize 也会为 Deployments 表返回一个空数组。如果从 Levels 表中找到记录,则此查询正确数据。但是,部署表中的记录不应该返回,因为它是不同的表吗?
Template.hasMany(Capability, { foreignKey : {name : 'templateId'} })
Capability.hasMany(Deployment, { foreignKey : {name : 'capabilityId'} });
Capability.hasMany(Level, {foreignKey : {name : 'capabilityId'} });
Level.hasMany(Requirement, {foreignKey : {name : 'levelId'}});
const allModules =
await Template.findAll({
include : [ {
model: Capability,
as: 'capabilities',
include : [
{
model: Deployment,
as : 'deployments'
},{
model: Level,
as : 'levels',
where : { isDeleted : false }, // this is the failing part ( if no records are returned both the Deployment recordset and the Level recordset fail)
include : [{
model : Requirement,
as : 'requirements',
}],
},]
}],
})
【问题讨论】:
标签: mysql node.js sequelize.js