我想创建2个相关对象,例如在1个位置和1个位置中,位置是对位置的引用,例如:
type Location {
id: String
name: String
}
type Place {
id: String
locationId: String
}
是否可以通过1个突变请求来执行此操作?目前,我正在使用2个单独的突变请求,如下所示:
mutation ($locationName: String!) {
insert_Location(objects: {name: $locationName}) {
returning {
id
}
}
}
//in another request, use the id returned from the request above
mutation ($locationId: String!) {
insert_Place(objects: {locationId: $locationId}) {
returning {
id
}
}
}
我知道一个变异中可能有多个字段,因此我可以在1个变异请求中创建2个 Locations ,如下所示。
mutation ($locationName: String!) {
location1: insert_Location(objects: {name: $locationName}) {
returning {
id
}
}
location2: insert_Location(objects: {name: $locationName}) {
returning {
id
}
}
}
但是,如果我要创建1个位置和1个位置,是否可以检索创建的位置ID并将其传递给第二个字段以创建位置?
答案 0 :(得分:0)
供以后参考:
正如@Xetera所指出的那样,由于这两种类型具有外键关系,因此您可以进行嵌套的插入变异,由hasura负责设置外键值。就我而言,它看起来像:
mutation ($locationName: String!) {
insert_Place(
objects: {
Location: {data: {name: $locationName}}, //hasura will create Location and assign the id to Place.locationId
}
) {
returning {
id
}
}
}