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
}
}