问题描述
我试图让 Sequelize 与 ReactAdmin 前端一起工作,但我正在努力使 findAndCountAll 正常工作。
问题: findAndCountAll 与关联模型一起使用时也会计算它们,而不是只计算父模型。
我有简单的模型:
权限可以有多个角色(被授权执行该操作)并且角色属于多个权限。 它们都通过 PermissionsRoles 表具有belongsToMany 关联。
在没有任何过滤器的情况下,我的查询应该返回 count == 25 但由于某些权限具有多个角色,因此它也在添加它们,最后 count == 34 > 是什么打破了我前面的分页。
router.get("/",async ({ query },res) => {
try {
const { filters,order,skip,perPage } = paramsToObject(query);
// find all matched permissions
let { count,rows: permissions } = await Permission.findAndCountAll({
where: filters,offset: skip,limit: perPage,order: [order],include: {
model: Role,as: "roles",attributes: ["Id"],// return just RoleId
through: { attributes: [] },// remove trought table from result
},});
res.set("Content-Range",count);
res.json(permissions);
} catch (e) {
returnError(res,e);
}
});
SELECT
Count([Permission].[id]) AS [count]
FROM [dbo].[permissions] AS [Permission]
LEFT OUTER JOIN (
[dbo].[permissionsroles] AS [roles->PermissionsRoles]
INNER JOIN [dbo].[roles] AS [roles] ON [roles].[id] = [roles->PermissionsRoles].[roleid]
) ON [Permission].[id] = [roles->PermissionsRoles].[permissionid]
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)