查询以按关系中的项目数排序的数据

时间:2018-12-05 05:20:28

标签: graphql prisma prisma-graphql

假设我有一个典型的数据模型,许多教程中都使用了该模型:

type User {
  id: ID! @unique
  name: String!
  posts: [Post!]!
}

type Post {
  id: ID! @unique
  title: String!
  content: String!
  published: Boolean! @default(value: "false")
  author: User!
}

我是否可以构建一个查询来获取10个有更多帖子的用户的列表? 基本上,我需要按帖子的“数量”查询排序…但是我还没有找到一种方法

任何帮助将不胜感激

欢呼

2 个答案:

答案 0 :(得分:3)

正如@ shivam-panday在评论中所说,Prisma当前尚未实现(请参见问题:https://github.com/prisma/prisma/issues/95

此评论特别说明了您的问题:

  

也能够通过“多对多”相关字段(通过相关项的计数)进行订购,这将是很棒的。

     

例如,获取前10个投票最多的链接的列表(假设投票是[Vote!]!类型的相关字段):

query {
  allLinks(first: 10, orderBy: votes_DESC) {
    id
    url
    description
    _votesMeta {
      count
    }
  }
}
     

当前,要获取该列表,您必须查询每个Link,然后在客户端上对其进行排序/切片,这可能会导致大量的超量提取。

有问题的评论:https://github.com/prisma/prisma/issues/95#issuecomment-320433296

答案 1 :(得分:0)

我遇到了与Prisma相同的问题,这是一个主要问题。检索所有用户的所有帖子,并按帖子数进行排序不是一个可行的解决方案。

我能想到的解决方法是跟踪帖子的数量(每次添加/删除时)并将其存储在用户中。

type User {
  id: ID! @unique
  name: String!
  postsCount: Int!
  posts: [Post!]!
}

通过这种方式,Prisma将公开postsCount的排序选项。

我不确定Prisma 2是否可以为该问题提供适当的解决方案……有人知道吗?