当Key为integer类型时,GraphQL返回"名称必须匹配"错误

roc*_*cky 2 graphql

我试图使用GraphQL遗留服务,它返回一个JSON,其中一些键作为整数.这是一个例子,

{
  "id": 1234,
  "image": {
    "45": "image1url",
    "90": "image2url"
  },
  "name": "I am legacy server"
}
Run Code Online (Sandbox Code Playgroud)

当我试图定义"45"as GraphQLfield,

var imageType = new graphql.GraphQLObjectType({
  name: 'Image',
  fields: {
    45: { type: graphql.GraphQLString },
    90: { type: graphql.GraphQLString }
  }
});
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,

错误:名称必须匹配/ ^ [_ a-zA-Z] [_ a-zA-Z0-9]*$ /但"45"不匹配.

我们如何处理键作为整数场景?

fre*_*net 5

GraphQL仅允许以ASCII字符或下划线开头的键.您可以使用resolve函数将旧名称映射到新名称.

var imageType = new graphql.GraphQLObjectType({
  name: 'Image',
  fields: {
    size45: { 
      type: graphql.GraphQLString,
      resolve: (parent) => parent['45'],
    },
    size90: { 
      type: graphql.GraphQLString,
      resolve: (parent) => parent['90']
    }
  }
});
Run Code Online (Sandbox Code Playgroud)