Ven*_*kat 21 node.js sequelize.js
我有一个模型,其中有3个实体:
User
Project
Contributor
Run Code Online (Sandbox Code Playgroud)
项目拥有所有者(他是用户)并且有多个贡献者(他们是用户).在我的仪表板中,我想列出用户的项目,即用户是所有者或贡献者的所有项目.
寻找拥有的项目Project.findAll({where: [owner: user]})
是微不足道的.如何修改此项以查找用户也是贡献者的项目?这将(在数据库查询中)使用EXISTS子句转换为子查询.
一般来说,您可以像这样使用exists
子句where
:
Project.findAll({
where: {
$and:[sequelize.literal('exists (select 1 from "someTable" where ...)']
}
})
Run Code Online (Sandbox Code Playgroud)
例如,我们定义下一个关联:
Project.belongsToMany( User, {through: 'Contributor'} );
User.belongsToMany( Project, {through: 'Contributor'} );
Project.belongsTo( User, { as: 'Owner', foreignKey: 'owner'} );
Run Code Online (Sandbox Code Playgroud)
如果您想要找到用户是贡献者和所有者的项目,您可以这样做:
user.getProjects({ where: {owner: user.id} });
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3628 次 |
最近记录: |