是否有可能在sequelize基于关联查询?

时间:2016-04-18 17:23:21

标签: javascript node.js sequelize.js

我建模了一个数据结构,我在" Rooms"之间有一个n:m的关系。和"用户"。

现在我要删除/销毁一个房间。 因此,我想检查删除用户是否在房间内。

我有用户名和房间。

如何在一个查询中完成此操作。 基本上我的问题是可以在查询中执行类似的操作:

Room.destroy({
   where: {
       //username in users
       users: {$contains: { username: "some username" }}
   }
})

这里的用户是"协会"给我的用户。

1 个答案:

答案 0 :(得分:2)

考虑到您的用户模型定义为User
这可能对你有帮助(或者至少给你一个起点):

Room.destroy({
  include: [{
    model: User,
      through: {
        where: {username: "some username"}
      }
  }]
});

Sequelize documentation中的n:m查询部分对此进行了描述:

  

使用“属于众多”,您可以根据关系进行查询   选择特定属性。例如,将findAll与

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