0

我正在用 GraphQL 替换现有的 REST 端点。

在我们现有的 REST 端点中,我们返回一个 JSON 数组。

[{
    "id": "ABC"
  },
  {
    "id": "123"
  },
  {
    "id": "xyz"
  },
  {
    "id": "789"
  }
]

GraphQL 似乎将数组包装在两个额外的对象层中。有没有办法删除“数据”和“客户端”层?

响应数据:

{
  "data": {
    "Client": [
      {
        "id": "ABC"
      },
      {
        "id": "123"
      },
      {
        "id": "xyz"
      },
      {
        "id": "789"
      }
    ]
  }
}

我的查询:

{
  Client(accountId: "5417727750494381532d735a") {
    id
  }
}
4

1 回答 1

0

不,这就是 GraphQL 的全部目的。拥有单个 endoint 并允许用户通过以查询格式指定输入而不是 REST API 来获取不同类型/粒度的数据,然后将它们映射到返回的 JSON 输出。

“数据”充当您查询的不同实体的父级/根级容器。如果返回的 JSON 数据中没有这些键,就无法分离相应的数据。例如

您的上述查询可以修改为包含另一个实体,如所有者,

{
  Client(accountId: "5417727750494381532d735a") {
    id
  }
  Owner {
    id
  }
}

在这种情况下,输出将类似于

{
  "data": {
    "Client": [
      ...
    ],
    "Owner": [
      ...
    ]
  }
}

如果 JSON 输出中没有“Client”和“Owner”键,则无法分隔相应的数组值。

在您的情况下,您只能通过data.Client对返回的输出执行操作来获取数组。

于 2018-05-08T23:52:31.687 回答