我在Node.js中有一个项目,使用Sequelize作为ORM。
我已创建了多对多关系,我需要使用"中的联结表中的某些列进行查询。其中"子句。
我有以下型号:
sequelize.define("User", {
//some values
}, {
"classMethods" : {
"associate" : function (models) {
User.hasMany(models.Book, { "through" : models.BorrowedBook });
}
}
});
sequelize.define("Book", {
//some values
}, {
"classMethods" : {
"associate" : function (models) {
Book.hasMany(models.User, { "through" : models.BorrowedBook });
}
}
});
sequelize.define("BorrowedBook", {
//some other values
"returnedAt" : DataTypes.DATE
}
);
我如何使用"其中"来自" BorrowedBook"?
的一列E.g。我想让所有用户都热切地加载至少有一本书和#34; BorrowedBook.returnedAt"是空的。
有没有办法,像这样?
db.Book
.find({
"include" : [
db.User,
{ "model" : db.BorrowedBook, "where" : { "borrowedAt" : null } }
]
})
答案 0 :(得分:1)
除非您实际上直接与直通模型建立关系,否则您不能包含直通模型,但您仍然无法实现您想要的效果。
最新的Sequelize大师应该支持以下内容:
db.Book.find({
include: [
{model: db.User, through: {
where: {borrowedAt: null}
}
]
})