フィールドの引数
ランタイム引数
リゾルバーが実行時に引数データにアクセスする必要がある場合は、単にリゾルバーのドキュメントブロックのフィールド定義で引数を定義し、引数としてリゾルバー関数の2番目の引数で引数を読み取ることができます。
/**
* @RelayResolver User.greet(salutation: String!): String
*/
export function greet(user: UserModel, args: { salutation: string }): string {
return `${args.salutation}, ${user.name}!`;
}
このフィールドを使用するには、GraphQLクエリでフィールドに引数を渡す必要があります
query MyQuery($salutation: String!) {
me {
greet(salutation: $salutation)
}
}
これにより、クエリを取得するときに引数を渡すことも必要になります。
@rootFragmentに引数を渡す
派生リゾルバーを定義している場合、そのルートフラグメントのフィールドの1つに引数が必要な場合は、フラグメント定義で@argumentDefinitionsを使用して明示的なフラグメント引数を定義する必要があります。リゾルバーフィールドでは、この引数がフィールド引数として渡されることが想定されます。
/**
* @RelayResolver User.fancyGreeting: String
* @rootFragment UserFancyGreetingFragment
*/
export function fancyGreeting(key: UserFancyGreetingFragment$key): string {
const user = readFragment(graphql`
fragment UserFancyGreetingFragment on User @argumentDefinitions(
salutation: {type: "String"},
) {
name
greet(salutation: $salutation)
}
`, key);
return `${user.name} says ${user.greet}`;
}
このフィールドを使用するには、GraphQLクエリでフィールドに引数を渡す必要があります
query MyQuery($salutation: String!) {
me {
fancyGreeting(salutation: $salutation)
}
}