【问题标题】:How to ensure enum order in graphql如何确保 graphql 中的枚举顺序
【发布时间】:2022-12-24 02:31:27
【问题描述】:

我定义了 BlocksType 命名的枚举在服务器中

export enum BlocksType {
    TEXT = "TEXT",
    LINK = "LINK",
    GALLERY = "GALLERY",
    CONTACT = "CONTACT",
    EMAIL = "EMAIL",
    RESIDENCE = "RESIDENCE",
    SNS = "SNS",
}

TEXT 是第一个,SNS 是最后一个。(必须保证此顺序。)

如果你看看我在客户端进行代码生成时生成的类型,

export enum BlocksType {
  CONTACT = "CONTACT",
  EMAIL = "EMAIL",
  GALLERY = "GALLERY",
  LINK = "LINK",
  RESIDENCE = "RESIDENCE",
  SNS = "SNS",
  TEXT = "TEXT",
}

它可能是按字母顺序排列的。

那么,如何在客户端中按照服务器中定义的枚举顺序进行排列?

【问题讨论】:

标签: typescript enums typegraphql


【解决方案1】:

建议实施

假设您正在使用 graphql-code-generatorthis collaborator comment 建议使用 Query 以正确的顺序公开数据,因为 Object.values() 显然不能保证总是产生相同的顺序。

在您的情况下,类似以下的内容应该有效。

type Query {
  blockTypes: [BlockType!]!
}

实际答案

知道 Object.values() 警告,(大多数时候)简单地使用 disable sorting 应该没问题:

# codegen.yml
schema: "schema.graphql"
config:
  sort: false
...
// codegen.ts
export default {
  schema: 'schema.graphql',
  config: {
    ...
    sort: false,
  },
  ...
};

请记住,这将禁用生成的模式/类型文件中的所有排序,但(至少对我而言)似乎没有任何不良副作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2015-04-02
    • 2019-08-14
    • 2020-02-09
    • 2011-12-31
    • 1970-01-01
    相关资源
    最近更新 更多