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} });