在使用 Prisma 的选择查询中使用 _count

Posted

技术标签:

【中文标题】在使用 Prisma 的选择查询中使用 _count【英文标题】:Using _count in a select query with Prisma 【发布时间】:2021-08-19 18:59:34 【问题描述】:

我目前正在重写我的 Discord 机器人,在此过程中,我需要重写所有 SQL 查询并将它们转换为 Prisma 查询。

SQL 查询 I',试图转换成 Prisma: connection.query('SELECT inviterId, count(*) as count FROM invites where serverId = ? AND valid = 1 GROUP BY inviterId ORDER BY count DESC')

我目前有这个:

    let leaderboard = await client.prisma.invites.aggregate(
      _count: 
        inviterId: true,
      ,
      where: 
        serverId: message.guildID,
        valid: true,
      ,
      orderBy: 
        inviterId: "desc",
      
    );
    console.log(leaderboard);

返回: _count: inviterId: 25

但是,我还需要在选择查询中返回数据。据我所知,在 findMany 查询中无法使用 _count,因此我尝试在聚合查询中使用 select,但这也不起作用。

我不确定如何选择要返回的数据,并按最大计数排序。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您需要使用 groupBy API,而不是聚合。

取自 Prisma 文档: https://www.prisma.io/docs/concepts/components/prisma-client/aggregation-grouping-summarizing

const groupUsers = await prisma.user.groupBy(
  by: ['country'],
  _sum: 
    profileViews: true,
  ,
)

【讨论】:

非常感谢!

以上是关于在使用 Prisma 的选择查询中使用 _count的主要内容,如果未能解决你的问题,请参考以下文章

使用 Prisma 2 从查询中排除用户密码

Prisma 查询解析器失败:“where 选择器的参数无效”

为啥我无法使用 GO 客户端在我的 prisma 查询中获取相关字段?

Prisma orderBy 在 Playground 之外的解析器/查询中

在 prisma 中循环替换查询

带条件的 Prisma 查询