web-dev-qa-db-ja.com

GraphQLクエリ:nullでない場合にのみフィールドを含める

GraphQLは、フィールドがnullでない場合にのみ、クライアントがサーバーにフィールドが必要であることを通知する可能性がありますか?

与えられたクエリ

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仕様に違反することなくこれは可能ですか?

13
asco

これが不可能であると私が知る限り、@ skipや@includeのような ディレクティブ があります。ディレクティブですが、変数が必要です。graphqlチームでケースを作成して、nullでない場合にのみフィールドを含めるようにディレクティブを拡張できると思います。

5
YasserKaddour

このES6構文はフロントエンドで使用できます。

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