sequelize - 具有关联的Where子句

时间:2014-09-13 21:44:37

标签: javascript node.js orm sequelize.js

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

User.hasMany(Board, {through: BoardUsers});
Board.hasMany(User, {through:BoardUsers});

无论如何,使用where子句我可以找到属于某个板块列表的用户。例如,让我说我有3个板,我想找到属于板1或3的前20个用户(使用默认排序顺序)。有没有办法在不为每个板执行单独的查找的情况下执行此操作,然后手动组合结果。

我希望能够做到这样的事情:

User.findAll({where:{board: [1,3]}});

但我似乎找不到办法做到这一点。

据我所知,等效的SQL会是这样的:

SELECT * FROM `users` WHERE id IN (SELECT userID FROM boardusers WHERE boardId IN (1,3))

但我希望能够通过ORM来做到这一点。

2 个答案:

答案 0 :(得分:2)

虽然我不确定您是否可以直接执行此操作,但您始终可以查询Boards并急切地获取用户。

这些方面的东西:

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

答案 1 :(得分:0)

相当迟到的反应,但只是有同样的问题,这就是我如何让它在Sequelize 3.24.0中工作(类似这样);

User.findAll({ include: [{ model: Board, where: { $in: [1,3] }}] });