我试图找出如何使用graphql突变变异嵌套对象,如果可能的话 . 例如,我有以下架构:
type Event {
id: String
name: String
description: String
place: Place
}
type Place {
id: String
name: String
location: Location
}
type Location {
city: String
country: String
zip: String
}
type Query {
events: [Event]
}
type Mutation {
updateEvent(id: String, name: String, description: String): Event
}
schema {
query: Query
mutation: Mutation
}
如何在 updateEvent
变异中添加地点信息?
2 回答
如果要将整个对象添加到突变中,则必须定义输入类型的graphql元素 . 这是一个小cheatsheet的链接 .
在你的情况下,它可能看起来像这样:
一般来说,您应该避免将突变的参数视为模式中对象类型的直接映射 . 虽然它们通常是相似的,但你最好在不假设它们的情况下接近它们 .
以您的基本类型为例 . 假设我想创建一个新事件,但不是知道位置,而是我只有经度/纬度 - 它实际上是从这个数据计算真实位置对象的后端,我当然不知道它的ID(它还没有!) . 我可能会像这样构建我的变异:
一个变异基本上只是一个函数调用,并且它提供一个事件并期望它返回一个事件,你提供创建一个事件所需的信息 .