我很喜欢GraphQL,但是我对它还不太熟悉。现在我正在尝试使用接口和联合类型,并且在使用mutation时遇到了问题。
假设我有以下这个schema:
interface FoodType {
id: String
type: String
}
type Pizza implements FoodType {
id: String
type: String
pizzaType: String
toppings: [String]
size: String
}
type Salad implements FoodType {
id: String
type: String
vegetarian: Boolean
dressing: Boolean
}
type BasicFood implements FoodType {
id: String
type: String
}
现在,我想创建新的食品项目,所以我开始做这样的事情:
type Mutation {
addPizza(input:Pizza):FoodType
addSalad(input:Salad):FoodType
addBasic(input:BasicFood):FoodType
}
这个方法没有生效的原因有两个:
- 如果我想将一个对象作为参数传递,那么它必须是“input”类型。但是,“Pizza”,“Salad”和“BasicFood”只是“type”类型。
- 一个输入类型不能实现一个接口。
所以,我的问题是:在这种接口的上下文中如何处理突变而不必过多重复类型?我想避免为查询创建一个Pizza类型和为突变创建一个InputPizza类型。
感谢您的帮助。