【发布时间】:2020-04-24 12:47:47
【问题描述】:
在嵌套突变方面需要一些帮助。
抽象的场景是这样的:
我想在 apollo-server 上组合 2 个突变调用,首先创建一个 Customer,然后为该客户创建一个 Address。 Address 突变需要 customerID 才能做到这一点,但也需要来自原始整体突变的信息,它需要访问。
这是通用代码:
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);
}
}
}
})
我没有从原始代码中展示很多复杂性,但我想了解的只是如何通过子突变访问请求参数的根源,如果可能的话。我真的不想将address 从顶级突变传递到子突变。
【问题讨论】:
-
跟进问题?有没有更好的方法来链接这些突变?从前端 UI,我希望能够对 graphql apollo 服务器进行一次调用,该服务器将进行 2 个 API 调用,一个用于创建联系人,另一个用于创建地址。该地址将需要创建的联系人 ID。
标签: javascript graphql apollo