当键是整数类型时,GraphQL 返回“名称必须匹配”错误

Posted

技术标签:

【中文标题】当键是整数类型时,GraphQL 返回“名称必须匹配”错误【英文标题】:GraphQL is returning "Names must match" error when the Key is of type integer 【发布时间】:2016-08-03 15:52:24 【问题描述】:

我正在尝试将 GraphQL 与旧服务一起使用,该服务返回 JSON,其中一些键为整数。这是一个例子,


  "id": 1234,
  "image": 
    "45": "image1url",
    "90": "image2url"
  ,
  "name": "I am legacy server"

当我尝试将"45" 定义为GraphQL 字段时,

var imageType = new graphql.GraphQLObjectType(
  name: 'Image',
  fields: 
    45:  type: graphql.GraphQLString ,
    90:  type: graphql.GraphQLString 
  
);

我收到以下错误,

错误:名称必须匹配 /^[_a-zA-Z][_a-zA-Z0-9]*$/ 但“45”不匹配。

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

【问题讨论】:

【参考方案1】:

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']
    
  
);

【讨论】:

以上是关于当键是整数类型时,GraphQL 返回“名称必须匹配”错误的主要内容,如果未能解决你的问题,请参考以下文章

metaData.getPrimaryKeys() 当键是复合的时返回单行

当键是一个只知道第一个元素的元组时,如何获取scala Map值?

Objective-c:自定义类实例作为字典键,当键存在时返回 nil

关于map函数的方法参考,当键的类型为String时编译错误

GraphQL 查询返回类型的“任何”数据类型

Graphql - 如何获取选定字段的类型(字符串、整数、ID 等)