Sequelize 获取关联模型的计数
Sequelize Get counts of associated model
我有角色模型,父模型有成员模型,子模型有成员角色
Role.belongsToMany(models.Member, {foreignKey: 'roleId', 通过: models.MemberRole});
Role.hasMany(models.Member角色, {foreignKey: 'roleId', as: 'roleMembers'});
目前,无论会员状态如何,它都在计数。如果 Member 具有 Active 状态,我想获取 memberRoles 的计数
subQuery: false,
where: {accountId: accountId},
attributes: {
include: [
[Sequelize.literal('COUNT(DISTINCT("roleMembers"."id"))'), 'assignedMemberCount'],
[Sequelize.literal('COUNT(DISTINCT("roleGroups"."id"))'), 'assignedGroupCount'],
]
},
include: [{
model: MemberRole,
as: 'roleMembers',
attributes: [],
required: false
},
order: [['name', 'ASC']],
group: ['Role.id'],
limit: options.limitCount,
offset: options.skipCount
最正确的方法是使用子查询,尤其是当您对主模型使用 limit
和 offset
时:
subQuery: false,
where: {accountId: accountId},
attributes: {
include: [
[Sequelize.literal('SELECT COUNT("roleMembers"."id") FROM roleMembers where roleMembers.roleId=roles.id'), 'assignedMemberCount'],
]
},
order: [['name', 'ASC']],
limit: options.limitCount,
offset: options.skipCount
我没有指出 assignedGroupCount
,因为我没有看到 include
roleGroups
。您可以使用 assignedMemberCount
子查询作为示例添加它。
我有角色模型,父模型有成员模型,子模型有成员角色
Role.belongsToMany(models.Member, {foreignKey: 'roleId', 通过: models.MemberRole}); Role.hasMany(models.Member角色, {foreignKey: 'roleId', as: 'roleMembers'});
目前,无论会员状态如何,它都在计数。如果 Member 具有 Active 状态,我想获取 memberRoles 的计数
subQuery: false,
where: {accountId: accountId},
attributes: {
include: [
[Sequelize.literal('COUNT(DISTINCT("roleMembers"."id"))'), 'assignedMemberCount'],
[Sequelize.literal('COUNT(DISTINCT("roleGroups"."id"))'), 'assignedGroupCount'],
]
},
include: [{
model: MemberRole,
as: 'roleMembers',
attributes: [],
required: false
},
order: [['name', 'ASC']],
group: ['Role.id'],
limit: options.limitCount,
offset: options.skipCount
最正确的方法是使用子查询,尤其是当您对主模型使用 limit
和 offset
时:
subQuery: false,
where: {accountId: accountId},
attributes: {
include: [
[Sequelize.literal('SELECT COUNT("roleMembers"."id") FROM roleMembers where roleMembers.roleId=roles.id'), 'assignedMemberCount'],
]
},
order: [['name', 'ASC']],
limit: options.limitCount,
offset: options.skipCount
我没有指出 assignedGroupCount
,因为我没有看到 include
roleGroups
。您可以使用 assignedMemberCount
子查询作为示例添加它。