使用对象的子数组进行突变后

时间:2018-07-24 14:06:01

标签: graphql apollo prisma

我已经阅读了所有其他关于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编码为字符串并解码。

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

1 个答案:

答案 0 :(得分:0)

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

// 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
  }
}

但是为了简洁起见,您将其缩短了吗?