【问题标题】:Post mutation with child array of objects带有子对象数组的后突变
【发布时间】:2019-01-01 04:47:45
【问题描述】:

我已经阅读了我能找到的所有其他 SO/Hackernoon/Graph.cool 帖子,但我仍然完全无法理解它。

假设我有一个名为Person 的类型,其关系为Dependant

type Person {
  id: ID! @unique
  createdAt: DateTime!
  updatedAt: DateTime!
  firstName: String
  middleName: String
  lastName: String
  dependants: [Dependant!]!
}

我只是,绝对不能发布带有其子项的Person 对象,并且服务器不会死在我身上。合乎逻辑的方法行不通,因为生活中没有什么是那么容易的:

mutation CREATE_PERSON (
    $firstName: String,
    $middleName: String,
    $lastName: String,
    $dependants: [Dependant!]!,
)

returns "Variable "$dependants" cannot be non-input type "[Dependant!]!"

有人告诉我将原始类型、相关字段和相关类型连接到“PersondependantsDependant”中:

mutation CREATE_PERSON (
    $firstName: String,
    $middleName: String,
    $lastName: String,
    $dependants: [PersondependantsDependant!]!,
)

return "Unknown type "PersondependantsDependant"

但这显然是行不通的,也没有在操场上或其他任何地方显示。其他人说这是不可能的,只需将其 JSON 编码为字符串并解码。

那里有实际的解决方案吗?这真的不是所有其他语言的噩梦。

【问题讨论】:

    标签: graphql apollo prisma


    【解决方案1】:

    Dependent 类型必须是“输入”类型,也许您将其设置为“类型”?将此添加到您的架构中,它应该可以工作:

    // This will work:
    input Dependent {
      someField: string!
    }
    
    // This will _NOT_ work:
    type Dependent {
      someField: string!
    }
    

    您的变异查询似乎也不完整。它目前只接受输入参数,但突变查询不存在......它应该看起来像这样:

    mutation CREATE_PERSON (
      $firstName: String,
      $middleName: String,
      $lastName: String,
      $dependents: [dependents!]!,
    ) {
      createPerson(
        firstName: $firstName
        middleName: $middleName
        lastName: $lastName
        dependents: $dependents
      ) {
        # return fields
        id
        firstName
      }
    }
    

    但也许你为了简洁而缩短了它?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-23
      • 2020-05-21
      • 2019-11-24
      • 2020-09-18
      • 1970-01-01
      • 2017-01-08
      • 2018-07-14
      • 2017-06-26
      相关资源
      最近更新 更多