Logo

機能:

'oneOf' Input Object

'oneOf' Input Object

oneOf input objectは特殊な種類のinput objectです。入力フィールドのうち正確に1つだけを入力として指定しなければならず、それ以外の場合はサーバーが検証エラーを返します。この動作はGraphQLの入力にポリモーフィズムをもたらし、よりすっきりとしたスキーマを設計できるようになります。

たとえば、アプリケーションでユーザーを取得する場合、ユーザーIDやメールアドレスなど、さまざまなプロパティで行うことができます。これを実現するには、通常、各プロパティごとに別々のフィールドを作成する必要があります:

type Query {
  userByID(id: ID!): User
  userByEmail(email: String!): User
}

oneOf input objectを使用することで、代わりに UserByInput oneOf input objectを通じてすべてのプロパティを受け付ける単一のフィールド user を持つことができます。この場合、プロパティ(IDまたはメールアドレス)のうちいずれか1つだけを指定できかつ指定しなければならないことがわかります:

type Query {
  user(by: UserByInput!): User
}
 
input UserByInput @oneOf {
  id: ID
  email: String
}

クエリでは、プロパティのうち正確に1つに対して入力値を指定します:

{
  tom: user(by: {
    id: 1
  }) {
    name
  }
 
  jerry: user(by: {
    email: "jerry@warnerbros.com"
  }) {
    name
  }
}

ニュースレターを購読する

Gato GraphQL のすべてのアップデートを把握しましょう。