Sequelize在多对多加入的地方

时间:2016-02-03 17:39:14

标签: javascript postgresql express orm sequelize.js

我希望有人可以帮助我。我正在使用Sequelize ORM for express.js,我在2个表之间有一个多对多的关系。

为了简化我的查询,我假装我的表是用户,书籍和UserBooks,其中UserBooks有UserId,BookId和一个额外的列(让我们说它的NoOfTimesRead)。

我想做的是:

user.getBooks({
  where: {
    "userBooks.NoOfTimesRead": 0
  }
});

如果我输入:

user.getBooks();

这可以运行并返回所有书籍,我只是无法通过连接表上的附加列找出如何查询。

我希望这是有道理的,

谢谢你看看!

1 个答案:

答案 0 :(得分:2)

  

使用Belongs-To-Many,您可以根据关系和查询进行查询   选择特定属性。例如,使用findAll with through

User.findAll({
  include: [{
    model: Project,
      through: {
        attributes: ['createdAt', 'startedAt', 'finishedAt']
          where: {completed: true}
      }
   }] 
 });

基本上,您可以使用through选项和include您关联的关系。可以找到更多here