我想使用GraphQL创建一个Car对象以及相关的对象CarOwner。
我希望能够在前端的单个请求中执行两项操作(createCar,createCarOwner)。
问题是,在创建carOwner时,我需要知道CarId,直到创建Car时我才知道。
在以后的请求中,一旦汽车被创建,我可能想在没有createCar的情况下调用createCarOwner,届时我将能够从前端提供carId。
这是我的模式:
type CarInput{
make: String
model: String
color: String
}
type CarOwnerInput {
carId: Int
carOwnerName: String
}
type CreateCarResponse {
carId: Int
}
type CreateCarOwnerResponse {
carOwnerId: Int
}
type Mutation {
createCar(car: CarInput) : CreateCarResponse
createCarOwner(carOwner: CarOwnerInput) : CreateCarOwnerResponse
}
这是我从前端进行的首次尝试,这不是正确的方法:
mutation($car: CarInput, $carOwner: CarOwnerInput) {
createCar(car: $car) { carId }
createCarOwner(carOwner: $carOwner, carId: ##THIS IS WHERE I NEED THE CAR ID FROM createCar##) { carOwnerId }
}
修改架构后,我现在就解决了
mutation($car: CarInput, $carOwner: CarOwnerInput) {
createCar(car: $car, carOwner: $carOwner) { carId }
}
我将CreateCarResolver更改为按顺序执行操作-首先是createCar,然后是createCarOwner。
我仍然有一个单独的CreateCarOwnerResolver,以用于是否曾经独立调用过createCarOwner。但是,我希望CreateCarResolver对CarOwners一无所知,我可以让CreateCarOwnerResolver在两种情况下都创建CarOwner。
我们如何告诉GraphQL先做一个突变,然后再将输出用于同一请求的一部分?这可能吗?