【发布时间】:2021-01-02 05:20:57
【问题描述】:
我正在尝试使用 Sequelize 内连接五个表。我知道我必须使用required: true 进行内部连接。但即使在使用 required: true 之后,它也不会生成我想要实现的查询。在这里,我附上了没有required: true 语句的代码。我应该如何放置required: true 语句来内连接五张表?
const db = require('../models');
const data = await db.A.findAll({
where: conditionA,
include: [{
model: db.B,
where: conditionB,
include: [
{
model: db.C,
where: conditionC,
include: [{
model: db.D,
where: conditionD
}],
},
{
model: db.E,
where: conditionE,
}
]
}]
});
模型关联
db.A.hasMany(db.B);
db.C.hasMany(db.B);
db.E.hasMany(db.B);
db.D.hasMany(db.C);
db.B.belongsTo(db.A);
db.B.belongsTo(db.C);
db.B.belongsTo(db.E);
db.C.belongsTo(db.D);
任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
显示模型关联
-
我已经编辑了问题。
-
您尝试过
A选项中指示的subQuery: false选项吗? -
是的,您应该在
include's 中的所有模型选项中注明required: true -
我没有尝试过“subQuery: false”。所以我已经按照你说的编辑了代码。我应该试试这个吗?抱歉在这里分享代码。 await db.A.findAll({ where: conditionA, required: true, subQuery: false, include: [{ model: db.B, where: conditionB, required: true, include: [ { model: db.C, where: conditionC, required: true include: [{ model: db.D, where: conditionD, required: true }], }, { model: db.E, where: conditionE, required: true } ] }] });跨度>
标签: node.js sequelize.js