GraphQL查询:仅包括字段(如果不为null)

时间:2016-04-06 12:58:55

标签: graphql

如果该字段不是null,GraphQL是否有可能让客户端告诉服务器它只想要一个字段?

给出查询

query HeroAndFriends {
  hero {
    name
    friends {
      name
    }
  }
}

响应应该看起来像

{
  "data": {
    "hero": {
      "friends": [
        {
          "name": "Luke Skywalker"
        },
        {
          "name": "Han Solo"
        },
        {
          "name": "Leia Organa"
        }
      ]
    }
  }
}

而不是

{
  "data": {
    "hero": {
      "name": null,
      "friends": [
        {
          "name": "Luke Skywalker"
        },
        {
          "name": "Han Solo"
        },
        {
          "name": "Leia Organa"
        }
      ]
    }
  }
}

这可能不违反GraphQL规范吗?

2 个答案:

答案 0 :(得分:5)

据我所知,这是不可能的,有directives喜欢@skip和@include。指令,但他们需要一个变量,我认为你可以让graphql团队将你的指令扩展到只包含该字段,如果它不是空的。

答案 1 :(得分:1)

您可以在前端使用此ES6语法:

Object.keys(data).forEach((key) => (data[key] == null) && delete data[key]);