我想在GraphQL查询中做2次创作。 (我知道我的查询结构不正确,但它可以说明我的问题)
mutation {
affiliateCreate(company: "test mutation") {
$id: id,
affiliateUserCreate(affiliate_id: $id, name: "test name") {
id,
name
},
company
}
}
我希望我的第一个id结果是变量,我传递给第二个创建调用?我对GraphQL很新,我想知道它是否可行。
有没有其他方法可以做这样的事情?或者我必须做2个变异调用?第一个是affiliateCreate
,第二个是第二个?
谢谢
答案 0 :(得分:5)
GraphQL不支持您要执行的操作。在Graphcool API中,我们使用所谓的嵌套突变来处理这种情况。我也听说它被称为复杂突变。
嵌套的创建突变的特征是嵌套的输入对象参数。如果您将输入对象author
添加到affiliateCreate
突变,您可以像这样使用它:
mutation createAffiliateAndUser {
affiliateCreate(
company: "test company"
author: {
name: "test user"
}
) {
id
}
}
这将创建一个联盟会员,一个用户,然后将两者链接在一起。类似地,如果您将输入对象affiliates
添加到userCreate
突变,它可能如下所示:
mutation createUserAndAffiliates {
userCreate(
name: "test user"
affiliates: [{
company: "first company"
}, {
company: "second company"
}]
) {
id
}
}
阅读有关嵌套突变in this article的更多信息。