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