我正在努力使用我的GraphQL API,因为我需要利用Enums,同时在前端保留完整的描述。
简而言之:
我对产品的状态不同:"Has been sent"
,"Not sent yet"
,"Received"
。
所以这是使用Enums的正确位置:
enum ProductState {
HAS_BEEN_SENT
NOT_SENT_YET
RECEIVED
}
但我需要在前端显示正确的字符串(" Has been sent
",而不是" HAS_BEEN_SENT
&#34 ;)
我无法使用简单的解决方案作为"用空格替换下划线并用字母小写字母"因为我的API不是英文的,而是法文的(因此我有重音和特殊字符)。
Enum能否返回一个字符串?还是一个对象? 我试过指令但不可能让它工作......
实际上我并不关心它是如何在数据库(大写或小写形式)中写入的,也不是在GraphQL API中。我只需要我的客户访问他们的"法语"中的不同产品状态。形式。
答案 0 :(得分:0)
据我所知,在GRAPHQL中只有一种受支持的语法来定义枚举,这就是您正在使用的语法。 您不能将枚举与字符串值相关联。
#NOTE: I would probably use a more descriptive name as opposed to ProductState
enum AllowedProductStatus {
HAS_BEEN_SENT
NOT_SENT_YET
RECEIVED
}
但是,如果您使用apollo服务器,则可以使用解析器添加自定义值。
const resolvers = {
AllowedProductStatus: {
HAS_BEEN_SENT: "Has been sent",
NOT_SENT_YET: "Not sent yet",
RECEIVED: "Received"
}
};
或者,如果您只是想使其唯一,也可以使用指令@unique
type Product {
status: String! @unique
}
希望这很有帮助。