如何在续集中构buildEXISTS子句

我有一个模型,有3个实体:

User Project Contributor 

一个项目有一个所有者(谁是一个用户),并有多个贡献者(谁是用户)。 在我的仪表板中,我想列出用户的项目,即用户是所有者或贡献者的所有项目。

使用Project.findAll({where: [owner: user]})find拥有的项目是微不足道的。 如何修改这个来找出用户也是贡献者的项目? 这将(在数据库查询中)使用EXISTS子句转换为子查询。

       

网上收集的解决方案 "如何在续集中构buildEXISTS子句"

例如,我们定义下一个关联:

 Project.belongsToMany( User, {through: 'Contributor'} ); User.belongsToMany( Project, {through: 'Contributor'} ); Project.belongsTo( User, { as: 'Owner', foreignKey: 'owner'} ); 

如果你想find用户是贡献者和所有者的项目,你可以这样做:

 user.getProjects({ where: {owner: user.id} }); 

不是Sequelize用户,而是阅读文档,看起来你可以简单地在你的where子句中使用$ contains操作符。 就像是:

 Project.findAll({ where: { owner: user, contributors: { $contains: [user.id] } } });