gpt4 book ai didi

apollo - graphql orderBy 查询出现问题

转载 作者:行者123 更新时间:2023-12-01 05:56:07 24 4
gpt4 key购买 nike

我正在使用 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?是否有不同或更好的方法来对结果进行排序?

最佳答案

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

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

领域 allPosts有输入类型 blogId: String , 但字段 allPostsFromAllBlogs不实现任何输入类型。

您必须更改字段 allPostsFromAllBlogs变成类似的东西:
type Query {
...
allPosts(blogId: String): [Post]
allPostsFromAllBlogs(orderBy: yourInputTypeDefinition): [Post]
...
}

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

关于apollo - graphql orderBy 查询出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49458718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com