Que*_*n D 4 graphql graphql-js
我正在为我的 GraphQL API 苦苦挣扎,因为我需要利用 Enums,同时在前端保留它们的完整描述。
简而言之:我对产品有不同的状态:"Has been sent", "Not sent yet", "Received"。所以这是使用枚举的正确位置:
enum ProductState {
HAS_BEEN_SENT
NOT_SENT_YET
RECEIVED
}
Run Code Online (Sandbox Code Playgroud)
但是我需要在前端显示正确的字符串(“ Has been sent”,而不是“ HAS_BEEN_SENT”)。
我不能使用简单的解决方案作为“用空格替换下划线并将字符串小写”,因为我的 API 不是英语而是法语(所以我有重音和特殊字符)。
枚举不能返回字符串吗?还是对象? 我尝试使用指令但无法让它工作......
实际上,我不在乎它是如何写入数据库(大写或小写形式)或 GraphQL API 中的。我只需要我的客户以“法语”形式访问不同的产品状态。
据我所知,在 GRAPHQL 中定义枚举只有一种受支持的语法,这就是您正在使用的一种。您不能将枚举与字符串值相关联。
#NOTE: I would probably use a more descriptive name as opposed to ProductState
enum AllowedProductStatus {
HAS_BEEN_SENT
NOT_SENT_YET
RECEIVED
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您使用 apollo 服务器,您可以使用解析器来添加自定义值。
const resolvers = {
AllowedProductStatus: {
HAS_BEEN_SENT: "Has been sent",
NOT_SENT_YET: "Not sent yet",
RECEIVED: "Received"
}
};
Run Code Online (Sandbox Code Playgroud)
或者,如果您只是想让它独一无二,您也可以使用指令 @unique
type Product {
status: String! @unique
}
Run Code Online (Sandbox Code Playgroud)
希望它有帮助。
| 归档时间: |
|
| 查看次数: |
2489 次 |
| 最近记录: |