Sequelize findAndCountAll 正在计算相关模型以及父模型

问题描述

我试图让 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);
  }
});

为“count”生成sql 查询

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 (将#修改为@)