node.js sequelize.js

node.js - Cómo construir la cláusula EXISTS en secuela



sequelize.js (2)

No es un usuario de Sequelize aquí, pero al leer los documentos parece que simplemente puede usar el operador $ contiene en su cláusula where . Algo como:

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

Tengo un modelo donde hay 3 entidades:

User Project Contributor

Un proyecto tiene un propietario (que es un usuario) y tiene varios contribuyentes (que son usuarios). En mi panel, quiero enumerar los proyectos de un usuario, es decir, todos los proyectos en los que el usuario es un propietario o un colaborador.

Encontrar proyectos Project.findAll({where: [owner: user]}) usando Project.findAll({where: [owner: user]}) es trivial. ¿Cómo modifico esto para averiguar los proyectos en los que el usuario también contribuye? Esto se traduciría (en la consulta de la base de datos) a una subconsulta usando la cláusula EXISTS.


Por ejemplo definimos las siguientes asociaciones:

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

Si desea buscar proyectos en los que el usuario sea colaborador y propietario al mismo tiempo, puede hacerlo de la siguiente manera:

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