在 Prisma 的 select 查询中使用 _count

Using _count in a select query with Prisma

我目前正在重写我的 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);

这个 returns: { _count: { inviterId: 25 } }

但是,我还需要 return select 查询中的数据。据我所知,不可能在 findMany 查询中使用 _count,因此我尝试在聚合查询中使用 select,但这也不起作用。

我不确定如何 select 要 return 编辑数据,并按最大计数排序。任何帮助将不胜感激。

而不是聚合,您需要使用 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,
  },
})