在多对多连接的位置进行序列化

Pet*_*nes 6 javascript postgresql orm express sequelize.js

我希望有人能帮助我。我正在使用 Express.js 的 Sequelize ORM,并且在 2 个表之间建立了有效的多对多关系。

为了简化我的查询,让我们假装我的表是 Users、Books 和 UserBooks,其中 UserBooks 具有 UserId、BookId 和一个附加列(假设它是 NoOfTimesRead)。

我想做的是这样的:

user.getBooks({
  where: {
    "userBooks.NoOfTimesRead": 0
  }
});
Run Code Online (Sandbox Code Playgroud)

如果我输入:

user.getBooks();
Run Code Online (Sandbox Code Playgroud)

这有效并返回所有书籍,我只是无法弄清楚如何通过连接表上的附加列来查询它。

我希望这是有道理的,

谢谢参观!

Sus*_*ant 4

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

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

基本上,您可以使用through选项和include链接的关系。更多内容可以在这里找到