Graphql createUser更新相关字段-了解关系

Graphql createUser更新相关字段-了解关系,graphql,graphcool,Graphql,Graphcool,我需要在create上设置相关字段的值,这可能吗 详情: 我有一个用户模型,带有以下字段:电子邮件,displayname。 我有一个带有字段的Verify模型:code,action 我在两个模型之间创建了如下关系: mutation { createUser ( email:"noit@mail.com", displayname:"noit", password:"123", blahVerify: { code: "this is a c

我需要在create上设置相关字段的值,这可能吗

详情: 我有一个
用户
模型,带有以下字段:
电子邮件,displayname
。 我有一个带有字段的
Verify
模型:
code,action

我在两个模型之间创建了如下关系:

mutation { 
  createUser (
    email:"noit@mail.com",
    displayname:"noit",
    password:"123",
    blahVerify: {
      code: "this is a code",
      action: "REGISTER"  
    }) {
    id
    blahVerify {
      id  
    } 
  }
}

我想
createUser
,同时设置
code
action
的相关字段。我试过这个:

mutation {
  createUser
  (
    email:"noit@mail.com",
    displayname:"noit",
    password:"123",
    code: "this is a code",
    action: "REGISTER"
  ) {
    id
  }
}
这在以下情况下失败:

{
  "data": null,
  "errors": [
    {
      "message": "Unknown argument 'code' on field 'createUser' of type 'Mutation'. (line 2, column 76):\n  createUser(email: \"noit@mail.com\", displayname: \"noit\", password: \"123\", code: \"this is a code\", action: \"REGISTER\") {\n                                                                           ^",
      "locations": [
        {
          "line": 2,
          "column": 76
        }
      ]
    },
    {
      "message": "Unknown argument 'action' on field 'createUser' of type 'Mutation'. (line 2, column 100):\n  createUser(email: \"noit@mail.com\", displayname: \"noit\", password: \"123\", code: \"this is a code\", action: \"REGISTER\") {\n                                                                                                   ^",
      "locations": [
        {
          "line": 2,
          "column": 100
        }
      ]
    }
  ]
}

你可以在电视上做这件事。逻辑系统不仅仅包括变异回调。在将输入保存到数据库之前,您可以在突变之前启动函数来验证/清除输入;在突变之后,您可以管理这样的连接,这些连接将在相同的突变负载中返回;您还可以异步(如突变回调)启动长期任务。您甚至可以将函数组合在一起,通过一系列函数调用传递元数据。

我们专门设计了GraphTool API,以尽可能简单地处理此类情况,您可以这样做:

mutation { 
  createUser (
    email:"noit@mail.com",
    displayname:"noit",
    password:"123",
    blahVerify: {
      code: "this is a code",
      action: "REGISTER"  
    }) {
    id
    blahVerify {
      id  
    } 
  }
}
注意嵌套的
blahVerify
对象参数

更详细地介绍了如何使用GraphQL变量从Apollo客户端发送嵌套的突变


作为旁注,根据验证节点的
操作
的不同可能值,您可能希望使用枚举字段而不是字符串。您可以阅读有关枚举字段的更多信息。

非常有趣,谢谢@mparis!我希望在graphql中,您可以和createUser同时(在一个操作中)创建一个相关条目,这在graphql中是不可能的吗?所以graphql中的每个突变一次只能影响一个模型?非常欢迎:)。GraphQL并没有真正限制任何东西,而是由实现来决定什么是可能的。例如,当嵌套对象涉及一对一或一对多关系(例如)时,也可以创建嵌套对象。多对多有点棘手,操作后逻辑函数可以帮助管理这些。例如,如果一个新用户注册了,你想让他们加入一个团队(例如,如果他们注册了一个像slack这样的应用程序),请你看看我更新的问题,我想我一开始真的很困惑。我觉得这比我想的要简单。我需要在create上设置一个相关字段的值,这可能吗?嗨,我想所有的MPARI都有正确的答案,在我编辑我的问题之前,请不要投反对票。我认为否决票应该转到我原来的帖子,因为我的措辞非常糟糕。