【问题标题】:Trouble with graphql orderBy querygraphql orderBy 查询的问题
【发布时间】:2018-09-02 15:57:50
【问题描述】:

我正在使用 apollo graphql 服务器。我有一个很好的无序查询。

query feedQuery {
  allPostsFromAllBlogs
  {
    id
    blogId
    title
    text
    likes
    createdAt
  }
}

我想对结果进行排序([Post] 类型)。这是我用来执行此操作的查询:

query feedQuery {
  allPostsFromAllBlogs( orderBy: {field: createdAt, direction:DESC}) 
  {
    id
    blogId
    title
    text
    likes
    createdAt
  }
}

在 graphiql 中产生此输出:

{
  "errors": [
{
  "message": "Unknown argument \"orderBy\" on field \"allPostsFromAllBlogs\" of type \"Query\".",
  "locations": [
    {
      "line": 2,
      "column": 25
    }
    ]
   }
 ]
}

这是架构:

scalar DateTime
type Query {
  blogInfo(id: String): Blog
  post(id: String): Post
  topPost(blogId: String): Post
  allPosts(blogId: String): [Post]
  allPostsFromAllBlogs: [Post]
  topPostFromAllBlogs: [BlogWithPost]
  comments(postId: String): Comments
  allBlogs: [Blog]
}
type Mutation {
  createPost(title: String,
             content: String,
             type: String,
             blogId: String,
             avatar: String): Post
}
type Blog {
  id: String
  title: String
  description: String
  authorName: String
  avatar: String
}
type Post {
  id: String
  blogId: String
  title: String
  content: String
  likes: Int
  avatar: String
  createdAt: DateTime
  type: String
}
type BlogWithPost {
  id: String
  title: String
  description: String
  authorName: String
  avatar: String
  post: Post
}
type Comment {
  commenterId: String
  text: String
}
type Comments {
  postId: String
  comments: [Comment]
}

我不确定诊断问题还需要哪些其他信息,但我认为它是查询语法错误。

为什么无法识别 orderBy?是否有其他或更好的方法来对结果进行排序?

【问题讨论】:

  • 服务器上的架构是什么样子的?你能控制它吗?
  • 我愿意。我将更新架构
  • 你找到这个错误的原因了吗?
  • 我也有同样的问题。 orderby 上的所有文档都不适用于我

标签: apollo graphql-js apollo-server


【解决方案1】:

问题是因为allPostsFromAllBlogs 没有任何输入类型(即过滤器)。从架构中可以看出:

type Query {
  ...
  allPosts(blogId: String): [Post]
  allPostsFromAllBlogs: [Post]
  ...
}

字段allPosts具有输入类型blogId: String,但字段allPostsFromAllBlogs没有实现任何输入类型。

您必须将字段 allPostsFromAllBlogs 更改为:

type Query {
  ...
  allPosts(blogId: String): [Post]
  allPostsFromAllBlogs(orderBy: yourInputTypeDefinition): [Post]
  ...
}

您必须更改该字段的解析器。

【讨论】:

    猜你喜欢
    • 2020-07-25
    • 2020-05-20
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 2018-06-15
    • 2020-11-13
    • 2019-04-24
    • 2017-01-25
    相关资源
    最近更新 更多