如何在GraphQL中定义键值的枚举

时间:2019-06-03 21:13:09

标签: graphql apollo-server

我如何在GraphQL模式中定义枚举键? 我期望的响应如下所示

 businessByState: { 
   MO: ["VALUE1", "VALUE2"],
   CA: ["VALUE1", "VALUE3", "VALUE4]
 }

我知道我可以为状态的值定义枚举,但是仍然想知道如何定义枚举,以便键值仅是2个字母的状态缩写?

1 个答案:

答案 0 :(得分:1)

在GraphQL中,必须明确定义对象类型的每个字段。例如:

type BusinessByState {
  AL: [String!]!
  AK: [String!]!
  AZ: [String!]!
  # and so on...
}

没有语法可以根据某些输入(例如现有的枚举)定义具有相同类型的多个字段。

如果您的typeDefs只是一个字符串,则可以使用字符串模板为自己节省一些输入,假设您有某种状态缩写数组:

const states = ['AL', 'AK', 'AZ', /** and so on **/]
const typeDefs = `
  enum STATES {
    ${states.join('\n')}
  }

  type BusinessByState {
    ${states.map(state => `${state}: [String!]!`).join('\n')}
  }
`