Javascript 带有关联的sequelize-Where子句

Javascript 带有关联的sequelize-Where子句,javascript,node.js,orm,sequelize.js,Javascript,Node.js,Orm,Sequelize.js,在sequelize中,我设置了电路板和用户,具有如下多对多关联 User.hasMany(Board, {through: BoardUsers}); Board.hasMany(User, {through:BoardUsers}); 无论如何,使用where子句,我可以找到属于某个单板列表的用户。例如,假设我有3个板,我希望找到前20个属于板1或板3的用户(使用默认排序顺序)。有没有一种方法可以做到这一点,而无需对每个板执行单独的查找,然后手动组合结果 我希望能够做到以下几点: User

在sequelize中,我设置了电路板和用户,具有如下多对多关联

User.hasMany(Board, {through: BoardUsers});
Board.hasMany(User, {through:BoardUsers});
无论如何,使用where子句,我可以找到属于某个单板列表的用户。例如,假设我有3个板,我希望找到前20个属于板1或板3的用户(使用默认排序顺序)。有没有一种方法可以做到这一点,而无需对每个板执行单独的查找,然后手动组合结果

我希望能够做到以下几点:

User.findAll({where:{board: [1,3]}});
SELECT * FROM `users` WHERE id IN (SELECT userID FROM boardusers WHERE boardId IN (1,3))
但我似乎找不到一个方法来做这件事

据我所知,等价的SQL应该是:

User.findAll({where:{board: [1,3]}});
SELECT * FROM `users` WHERE id IN (SELECT userID FROM boardusers WHERE boardId IN (1,3))

但是我希望能够通过ORM来完成这项工作。

虽然我不确定您是否可以直接完成这项工作,但您可以随时查询
,并热切地吸引用户

大致如下:

Board.findAll({where: {id: [1,3]}}, { include: [ User ] })

回复很晚,但有同样的问题,下面是我如何让它在Sequelize 3.24.0中工作的(类似这样的东西)


问题是不可能按字母顺序获得前20个用户(组合)。因为用户是电路板的一个子集,所以您不能将其作为一个组进行限制或排序。@MarcMailhot是的,它非常有限。看起来您实际上可以过滤急切获取的行,但是似乎没有办法通过这些急切获取的行过滤结果。看起来我可能只是手工编写SQL。我试了一下,它似乎起了作用,只是有点不方便/笨重/难看。