GraphQLスキーマの複数のタイプに共通するフィールドのセットがある場合、このような方法を実行する方法はありますか?
type Address {
line1: String
city: String
state: String
Zip: String
}
fragment NameAndAddress on Person, Business {
name: String
address: Address
}
type Business {
...NameAndAddress
hours: String
}
type Customer {
...NameAndAddress
customerSince: Date
}
フラグメントは、リクエストを行うときにクライアント側でのみ使用されます。スキーマ内では使用できません。 GraphQLは、タイプの継承や、異なるタイプの同じフィールドを書き出さなければならないという冗長性を減らす他のメカニズムをサポートしていません。
apollo-server
を使用している場合、スキーマを構成する型定義は単なる文字列なので、テンプレートリテラルを通じて探している機能を実装できます。
const nameAndAddress = `
name: String
address: Address
`
const typeDefs = `
type Business {
${nameAndAddress}
hours: String
}
type Customer {
${nameAndAddress}
customerSince: Date
}
`
あるいは、型継承を使用できるようにする graphql-s2s のようなライブラリがあります。
この質問の時にそれが利用できなかったかどうかはわかりませんが、私は interfaces があなたのニーズに合うはずだと思います