首页 文章

使用大量用例在GraphQL中创建突变

提问于
浏览
1

我是GraphQL的新手,需要一些建议(最佳实践)来创建GraphQL中的突变(特别是 graphene-python ) . 我们假设有一些 TaskUser . 现在我想创建 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
        }
       }
      }

和_2644261中的相应突变:

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)

1 回答

  • 0

    对于3.,如果事实证明你无论如何都需要一个 createUser 突变,那么从两个独立的突变开始它将是一个更简单的实现:

    • createUser

    • createTask (使用从 createUser 返回的用户

    但是,您无法将这两个突变组合到单个HTTP请求中 .

相关问题