graphql - 带有子对象数组的后突变
问题描述
我已经阅读了我能找到的所有其他 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 编码为字符串并解码。
那里有实际的解决方案吗?这真的不是所有其他语言的噩梦。
解决方案
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
}
}
但也许你为了简洁而缩短了它?
推荐阅读
- c# - SSH.NET [ObjectDisposedException:无法访问已处置的对象。对象名称:'Renci.SshNet.SshClient'。]
- r - R:使用 R 中的 cph(rms 包)对 cox 模型的连续变量和分类变量进行交互样条分析
- java - Jacoco - 如何检查哪些行缺少覆盖
- python - Pandas 根据其他列中的值创建新列
- flutter - 使用会话令牌限制 Flutter 中的国家和引用
- arrays - 检查 IF 语句时,有没有办法让表中的列名等于字符串?
- android - 在 Activity 中使用 FirebaseAuthUI 和 Navigation 组件
- amazon-s3 - AWS S3:是否可以在不使用拒绝的情况下授予对除一个之外的所有存储桶的访问权限
- wordpress - 自定义 Woocommerce 登录页面
- asp.net - 如何向 System.Web.UI.WebControls.WebControl 添加新的布尔属性?