express-graphql:如何删除外部数据"对象层。

时间:2018-05-08 22:13:51

标签: express graphql express-graphql

我用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
  }
}

1 个答案:

答案 0 :(得分:0)

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

'数据'充当您查询过的不同实体的父/根级容器。如果在返回的JSON数据中没有这些键,则无法以任何方式隔离相应的数据。例如

您可以修改上述查询以包含其他实体,例如所有者



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




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



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




没有'客户'和'所有者'在JSON输出中的键,没有办法分离相应的数组值。

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