📚
リゾルバでオブジェクトの引数を受け取る(NestJS, GraphQL)
引数をオブジェクトにしたい場合は@InputType
デコレータでクラスを定義する必要があるようです。
コード
import { Args, Field, InputType, Int, Query, Resolver } from '@nestjs/graphql'
@InputType()
class Person {
@Field(() => Int)
age: number
@Field()
name: string
}
@Resolver()
class SampleResolver {
@Query(() => String)
sample(
@Args('person', {
type: () => Person,
})
person: Person,
): string {
return `${person.name}(${person.age})さん、こんにちは`
}
}
リクエスト
query {
sample(person: {
name: "サンプル太郎"
age: 20
})
}
レスポンス
{
"data": {
"sample": "サンプル太郎(20)さん、こんにちは"
}
}
詰まったところ
引数のクラスを@ArgsType
や@ObjectType
等で定義しようとしてエラーになっていました。
参考
Discussion