нужна помощь по вложенным мутациям.
Абстрактный сценарий таков:
Я хочу объединить 2 вызова мутации на apollo-сервере, чтобы сначала создать Customer
, а затем создать Address
для этого клиента. Мутация Address
нуждается в customerID
, чтобы иметь возможность сделать это, но также имеет информацию из исходной общей мутации, к которой ей нужен доступ.
Вот обобщенный c код:
makeExecutableSchema({
typeDefs: gql`
type Mutation {
createCustomerWithAddress(customer: CustomerRequest!, address: AddressRequest!): Response
}
input CustomerRequest {
name: String!
}
input AddressRequest {
address: String!
city: String!
state: String!
country: String!
}
type Response {
customerID: Int!
addressID: Int!
}
`,
resolvers: {
Mutation: {
createCustomerWithAddress: async (_, {customer}, context, info) => {
return await api.someAsyncCall(customer);
}
},
Response: {
addressID: async(customerID) => {
// how do we get AddressRequest here?
return await api.someAsyncCall(customerID, address);
}
}
}
})
Существует много сложностей, которые я не показываю из исходного кода, но то, что я хотел получить, это просто root о том, как получить доступ к параметрам запроса через мутации, если это возможно. Я действительно не хочу передавать address
из верхней мутации в суб мутацию.