枚举可以在GraphQL中返回描述(字符串)吗?

问题描述 投票:2回答:1

我正在努力使用我的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”)。

我不能使用一个简单的解决方案作为“用空格替换下划线和小写字符串”因为我的API不是英文而是法文(因此我有重音和特殊字符)。

Enum不能返回一个字符串吗?还是一个对象?我试过指令,但不可能让它工作......

实际上我并不关心它是如何在数据库(大写或小写形式)中写入的,也不是在GraphQL API中。我只需要我的客户以“法语”形式访问不同的产品状态。

graphql graphql-js
1个回答
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
}

希望它有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.