微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。