Prisma - 按_sum排序

Prisma - Sort by _sum

我的 prisma 中确实有简单的 groupBy 查询,如下所示:

const groupBy = await prisma.referral.groupBy({
  by: ['recommenderId'],
  _sum: {
     points: true,
  },
});

我要找的是按这个_sum值排序的方法。

当前回复为:

{
    "groupBy": [
        {
            "_sum": {
                "points": 20000
            },
            "recommenderId": 3
        },
        {
            "_sum": {
                "points": 19000
            },
            "recommenderId": 2
        },
        {
            "_sum": {
                "points": 34000
            },
            "recommenderId": 1
        }
    ]
}

我需要得到的是:

{
    "groupBy": [
        {
            "_sum": {
                "points": 34000
            },
            "recommenderId": 1
        },
        {
            "_sum": {
                "points": 20000
            },
            "recommenderId": 3
        },
        {
            "_sum": {
                "points": 19000
            },
            "recommenderId": 2
        },
    ]
}

根据文档 (https://www.prisma.io/docs/concepts/components/prisma-client/filtering-and-sorting#sorting) 我试过这样的事情:

const groupBy = await prisma.referral.groupBy({
      by: ['recommenderId'],
      _sum: {
        points: true,
      },
      orderBy: [
        {
          _sum: 'desc',
        },
      ],
    });

但是使用代码时出现错误:

Argument _sum: Got invalid value 'desc' on prisma.groupByReferral. Provided String, expected ReferralSumOrderByAggregateInput

您可以同时在不同的字段上使用_sum,所以您还需要提供您要排序的字段名称:

const groupBy = await prisma.referral.groupBy({
      by: ['recommenderId'],
      _sum: {
        points: true,
      },
      orderBy: [
        {
          _sum: {
            // Add `points` key here
            points: 'desc'
          }
        },
      ],
    });