加入Sequelize

时间:2014-11-05 05:36:51

标签: sequelize.js

我有这些联想:

Room hasMany Key
User hasMany Key

现在我想找到特定用户拥有密钥的所有房间。

目前,我获得了具有特定user_id的所有密钥。

然后我得到所有房间并过滤掉那些没有找到钥匙的房间。这似乎相当愚蠢,因为所有这些都可以用一个SQL命令完成。

我可能会拔出每个密钥的room_id并在房间的查询中使用它们,但这些仍然是两个请求。

1 个答案:

答案 0 :(得分:2)

您应该可以使用prefetching / includes来解决此问题。

您可以使用以下内容:

Room.findAll({
  include: [
    {model: Key, where: {user_id: 1}}
  ]
});

或者

Room.findAll({
  include: [
    {model: Key, include: [
      {model: User, where: {id: 1}}
    ]}
  ]
});