Sequelize.js - 来自"中的联结表的列;其中"条款

时间:2014-05-14 10:35:20

标签: node.js orm sequelize.js

我在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 } }
        ]
    })

1 个答案:

答案 0 :(得分:1)

除非您实际上直接与直通模型建立关系,否则您不能包含直通模型,但您仍然无法实现您想要的效果。

最新的Sequelize大师应该支持以下内容:

db.Book.find({
  include: [
    {model: db.User, through: {
      where: {borrowedAt: null}
    }
  ]
})