首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >express-graphql:如何移除外部“数据”对象层。

express-graphql:如何移除外部“数据”对象层。
EN

Stack Overflow用户
提问于 2018-05-09 06:13:51
回答 1查看 733关注 0票数 0

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

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

代码语言:javascript
复制
[{
    "id": "ABC"
  },
  {
    "id": "123"
  },
  {
    "id": "xyz"
  },
  {
    "id": "789"
  }
]

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

响应数据:

代码语言:javascript
复制
{
  "data": {
    "Client": [
      {
        "id": "ABC"
      },
      {
        "id": "123"
      },
      {
        "id": "xyz"
      },
      {
        "id": "789"
      }
    ]
  }
}

我的问题是:

代码语言:javascript
复制
{
  Client(accountId: "5417727750494381532d735a") {
    id
  }
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-09 07:52:32

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

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

您可以修改上面的查询,以包括其他实体,如Owner,

代码语言:javascript
复制
{
  Client(accountId: "5417727750494381532d735a") {
    id
  }
  Owner {
    id
  }
}

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

代码语言:javascript
复制
{
  "data": {
    "Client": [
      ...
    ],
    "Owner": [
      ...
    ]
  }
}

如果JSON输出中没有'Client‘和'Owner’键,就无法分隔相应的数组值。

在本例中,您只能通过对返回的输出执行data.Client来获取数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50242992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档