获得续集所属的许多协会的数量

我有两种模式, projectuser在几个方面相互关联。

首先, project由具有以下关联的user拥有:

 Project.belongsTo(models.User, { as: 'Owner', foreignKey: 'userId' }); 

其次, projectuser通过喜欢 projectuser相关联。

 Project.belongsToMany(models.User, { as: 'UserLikes', through: models.ProjectLikes, foreignKey: 'projectId' }); User.belongsToMany(models.Project, { as: 'LikedProjects', through: models.ProjectLikes, foreignKey: 'userId' }); 

第三,一个projectuser也可以通过一个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!

请帮助…谢谢!