【发布时间】:2018-09-22 02:27:18
【问题描述】:
我是 GraphQL 的新手,需要一些建议(最佳实践)来在 GraphQL 中创建突变(尤其是 graphene-python)。假设我们有一些Task 和一个User。现在我想创建Task 突变,涵盖三种情况:
- 创建
Task。 - 创建
Task并将现有的User分配给这个Task。 - 创建
Task并将新创建的User分配给这个Task。
那么,将其实现为单个 QraphQL“入口点”是个好主意,还是为第三种情况创建另一个突变更好(也许)?
mutation {
createTask(taskTitle: "Do some stuff"){
task {
id
}
}
}
mutation {
createTask(taskTitle: "Do some stuff",
user: {id: "ggdf00askladnl42"}){
task {
id
}
}
}
mutation {
createTask(taskTitle: "Do some stuff",
user: {email: "j.doe@example.com", fullName: "John Doe"}){
task {
id
}
}
}
以及graphene-python中的相应突变:
class CreateTODO(graphene.Mutation):
class Arguments:
task_title = graphene.NonNull(graphene.String)
user = UserInput()
task = graphene.Field(lambda: Task)
def mutate(self, info, task_title, user=None):
#
# Do some stuff here
#
return CreateTODO(task=task)
【问题讨论】: