每个类型/节点通常都有一个删除突变。例如,deleteuser、deletebook、deleteMessage等。如果您希望一次删除多个条目,那么这些突变的输入通常是一个ID或一个ID列表。
如果您希望能够删除具有单个突变的任何类型的对象,也可以有一个DeleteNode突变。然后,您应该使所有可删除的类型继承自一个节点类型,并确保ID在所有类型之间是真正唯一的。
每个实体的删除突变和节点的一般删除示例:
interface Node {
id: ID!
}
type Person implements Node {
id: ID!
firstName: String!
lastName: String!
}
type Book implements Node {
id: ID!
title: String!
author: String!
}
union NodeEntity = Person | Book
type Query {
person(id: ID!): Person
persons: [Person!]! # You may want to limit the number of returned items
# ... same thing for Book
node(id: ID!): Node
nodes: [Node!]! # You may want to limit the number of returned items
}
type Mutation {
createPerson(input: CreatePersonInput!): CreatePersonPayload!
updatePerson(input: UpdatePersonInput!): UpdatePersonPayload!
deletePerson(input: DeletePersonInput!): DeletePersonPayload!
# ... same thing for Book
deleteNode(input: DeleteNodeInput!): DeleteNodePayload!
# or simply:
# deleteNode(id: String!): Boolean!
}
# Mutation inputs
input CreatePersonInput {
firstName: String!
lastName: String!
}
input UpdatePersonInput {
personId: ID!
firstName: String
lastName: String
}
input DeletePersonInput {
personId: ID!
}
input DeleteNodeInput {
nodeId: ID!
}
# Mutation results
type CreatePersonPayload {
person: Person!
}
type UpdatePersonPayload {
person: Person!
}
type DeletePersonPayload {
person: Person!
}
type DeleteNodePayload {
node: NodeEntity!
# or simply:
# node: Node
}
希望这有帮助!