0

我在这样的架构中有一个枚举:

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": "枚举“分类”不能表示值:{ A: "A", B: "B", C: "C", D: "D" }",

那么,如何解决这个错误,并在查询中返回所有分类?

谢谢

4

1 回答 1

0

你有两个问题。

第一个问题出在您的架构中:listClasification可能需要返回一个值列表。GraphQL 中最接近的东西是数组。这是带有数组的固定模式Clasification

type Query {
  listClasification: [Clasification]
}

第二个问题在您的解析器中。你想接收像['A', 'B', 'C', 'D'](一个数组)这样的数据,所以这就是你的解析器应该返回的。您当前正在返回一个对象,而不是一个数组。如果您想在classification对象和数组之间进行转换,这里是固定解析器。

const resolvers = {
  Query: {
    listClasification: () => { return Object.keys(classification) }
  },
};

请注意,如果您刚刚定义了classification = ['A', 'B', 'C', 'D'].

于 2021-05-17T19:57:57.360 回答