问题描述
我在这样的架构中有一个枚举:
enum Classification {
A
B
C
D
}
以及以下查询:
type Query {
listClasification: Clasification
}
Ant JS代码上的解析器如下:
const classification = {
A: 'A',B: 'B',C: 'C',D: 'D'
};
const resolvers = {
Query: {
listClasification: () => {return classification}
},};
但是当我执行以下查询时:
{
listClasification
}
我收到以下错误:
"message": "Enum "Classification" 不能代表值:{ A: "A",B: "B",C: "C",D: "D" }",
那么,如何解决这个错误,并返回查询中的所有分类?
谢谢
解决方法
你有两个问题。
第一个问题出在您的架构中:listClasification
可能需要返回一个值列表。 GraphQL 中最接近的是数组。这是带有 Clasification
数组的固定架构:
type Query {
listClasification: [Clasification]
}
第二个问题出在您的解析器中。您想接收像 ['A','B','C','D']
(一个数组)这样的数据,所以这就是您的解析器应该返回的内容。您当前正在返回一个对象,而不是一个数组。如果您想在 classification
对象和数组之间进行转换,这里是固定解析器。
const resolvers = {
Query: {
listClasification: () => { return Object.keys(classification) }
},};
请注意,如果您刚刚定义了 classification = ['A','D']
,它可能会更简单。