我们正在使用 apollo-server 来使用 GraphQL,我们尝试在单个查询操作中执行多个查询,如下所述。
我希望这两个查询都应该执行并提供结果。
query Operation1 {
getPosts: {
id
title
url
}
getBooks: {
id
title
}
}
现在在上述情况下,如果两个查询都成功,那么我们将获得下面给出的结果。
{
"data": {
"getPosts": [{
"id": "P1",
"title": "post1",
"url": "/blog/post1"
}],
"getBooks": [{
"id": "B1",
"title": "book1"
}]
}
}
但是如果任何一个查询失败,结果仅表示为错误。
{
"data": {},
"errors": [
{
"message": "failure message",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"getBooks"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR"
}
}
]
}
我不确定这是否是期望的行为,因为我的期望如下。
{
"data": {
"getPosts": [
{
"id": "P1",
"title": "post1",
"url": "/blog/post1"
}
],
"getBooks": {
"data": {},
"errors": [
{
"message": "failure message",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"getBooks"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR"
}
}
]
}
}
}
来自阿波罗文档:https://www.apollographql.com/docs/react/data/queries/#inspecting-error-states
检查错误状态
为 useQuery 挂钩提供 errorPolicy 配置选项。 默认值是none,这告诉Apollo客户端对待所有 GraphQL 错误作为运行时错误。在这种情况下,Apollo 客户端会丢弃 服务器返回的任何查询响应数据并设置错误 useQuery 结果对象中的属性。
如果将errorPolicy设置为all,useQuery不会丢弃查询 响应数据,允许您渲染部分结果。
更多信息,请参阅处理操作错误。