获得续集所属的许多协会的数量
我有两种模式, project
和user
在几个方面相互关联。
首先, project
由具有以下关联的user
拥有:
Project.belongsTo(models.User, { as: 'Owner', foreignKey: 'userId' });
其次, project
和user
通过喜欢 project
的user
相关联。
Project.belongsToMany(models.User, { as: 'UserLikes', through: models.ProjectLikes, foreignKey: 'projectId' }); User.belongsToMany(models.Project, { as: 'LikedProjects', through: models.ProjectLikes, foreignKey: 'userId' });
第三,一个project
和user
也可以通过一个user
作为一个project
一部分通过一个angular色进行关联。
Project.belongsToMany(models.User, { as: 'Users', through: models.ProjectRoles, foreignKey: 'projectId' }); User.belongsToMany(models.Project, { as: 'Roles', through: models.ProjectRoles, foreignKey: 'userId' });
我试图实现的是find所有的项目,并与他们一起返回相关的“喜欢”计数。 不过,我真的很难找出如何做到这一点。
我读过,我应该能够做到这样的事情:
models.Project.findAll({ limit: 5, attributes: ['Project.*', [models.sequelize.fn('COUNT', models.sequelize.col('UserLikes.id')), 'totalLikes']], include: [ { model: models.User, as: 'UserLikes' }], group: [ models.Project.rawAttributes.id, models.sequelize.col('UserLikes.id') ] }) .then(function (projects) { return res.json(projects); });
但是我得到一个missing FROM-clause entry for table "UserLikes
错误missing FROM-clause entry for table "UserLikes
。
我试着改变两边的关联hasMany
使用特定的连接表模型,然后做:
models.Project.findAll({ limit: 5, attributes: ['Project.*', 'ProjectLikes.id', [models.sequelize.fn('COUNT', models.sequelize.col('ProjectLikes.id')), 'totalLikes']], include: [ { model: models.ProjectLikes }], group: [ models.Project.rawAttributes.id ] }) .then(function (projects) { return res.json(projects); });
但是我得到了同样的错误,或者关于Ids不明确的错误或者关于Project.id的错误需要在GROUP BY子句中(即使它是?!)。
我正在试图找出一些应该非常简单的东西,我正在考虑切换回MongoDB!
请帮助…谢谢!