GQL:多重查询执行

问题描述 投票:0回答:1

我们正在使用 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"
          }
        }
      ]
    }
  }
}
graphql apollo-server graphql-js
1个回答
0
投票

来自阿波罗文档:https://www.apollographql.com/docs/react/data/queries/#inspecting-error-states

检查错误状态

为 useQuery 挂钩提供 errorPolicy 配置选项。 默认值是none,这告诉Apollo客户端对待所有 GraphQL 错误作为运行时错误。在这种情况下,Apollo 客户端会丢弃 服务器返回的任何查询响应数据并设置错误 useQuery 结果对象中的属性。

如果将errorPolicy设置为all,useQuery不会丢弃查询 响应数据,允许您渲染部分结果。

更多信息,请参阅处理操作错误

© www.soinside.com 2019 - 2024. All rights reserved.