Fre*_*iot 5 interface mutation apollo graphql
我是 GraphQL 的新手,但我真的很喜欢它。现在我在玩接口和联合,我面临着突变的问题。
假设我有这个架构:
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
}
Run Code Online (Sandbox Code Playgroud)
现在,我想创造新的食物,所以我开始做这样的事情:
type Mutation {
addPizza(input:Pizza):FoodType
addSalad(input:Salad):FoodType
addBasic(input:BasicFood):FoodType
}
Run Code Online (Sandbox Code Playgroud)
这不起作用有两个原因:
所以,我的问题是:如何在接口的这种上下文中处理突变而不必过多地复制类型?我想避免使用 Pizza 类型的查询和 InputPizza 类型的突变。
感谢您的帮助。
输入和输出类型是根本不同的东西,只是因为您可能有恰好代表相似对象的类型(例如Pizza
和PizzaInput
),这是错误的等价。
假设您的架构中Pizza
有一个强制 id 字段(您的 ID 不是强制的,但可能应该是)。这可能没有意义PizzaInput
——它将由服务器生成。我要表达的观点是,除了最简单的系统之外的任何系统中,都将进行处理以将用户输入转换为成熟的对象以返回。
你只需要咬紧牙关,做那些感觉像是重复的工作,从长远来看,你就会看到好处。