I’m trying to get Mutation Update query in GraphQL Playground. I’m basic level in GraphQL and in learning phase. I don’t know how to create udpate Mutation for the below Owner code. Any idea what I’m missing in my code / query?
—Resolver—
> @Mutation(() => Owner) updateOwner( > @Args('id', { type: () => Int }) id: number, > @Args('updateOwnerInput') updateOwnerInput: UpdateOwnerInput) { > return this.ownersService.update(id, updateOwnerInput); }
—Service—
update(id: number, updateOwnerInput: UpdateOwnerInput) { return this.ownersRepository.update(id, updateOwnerInput); }
—dto—
@InputType() export class UpdateOwnerInput extends PartialType(CreateOwnerInput) { @Column() @Field(() => Int) id: number; }
—entity—
@Entity() @ObjectType() export class Owner { @PrimaryGeneratedColumn() @Field(type => Int) id: number; @Column() @Field() name: string; @OneToMany(() => Pet, pet => pet.owner) @Field(type => [Pet], { nullable: true }) pets?: Pet[]; }
—schema—
type Pet { id: Int! name: String! type: String ownerId: Int! owner: Owner! } type Owner { id: Int! name: String! pets: [Pet!] } type Query { getPet(id: Int!): Pet! pets: [Pet!]! owners: [Owner!]! owner(id: Int!): Owner! } type Mutation { createPet(createPetInput: CreatePetInput!): Pet! createOwner(createOwnerInput: CreateOwnerInput!): Owner! updateOwner(id: Int!, updateOwnerInput: UpdateOwnerInput!): Owner! } input CreatePetInput { name: String! type: String ownerId: Int! } input CreateOwnerInput { name: String! } input UpdateOwnerInput { name: String id: Int! }
—GraphQL Query (I don’t know whether it is correct or wrong)
mutation { updateOwner (updateOwnerInput:{ id:6, name: "josh", }) }
—error—
"message": "Field "updateOwner" of type "Owner!" must have a selection of subfields. Did you mean "updateOwner { ... }"?",
Advertisement
Answer
You need to make a selection of subfields to return (even if you’re not interested in any):
mutation { updateOwner (updateOwnerInput:{ id:6, name: "josh", }) { id name } }