当前位置:  开发笔记 > 编程语言 > 正文

在apollo-server-express中将snake_case转换为camelCase字段名称

如何解决《在apollo-server-express中将snake_case转换为camelCase字段名称》经验,为你挑选了1个好方法。

我是GraphQL和Apollo Server的新手,尽管我已经搜索了文档和Google以获得答案。我正在使用apollo-server-express来从第三方REST API获取数据。REST API的字段使用snake_case。有没有简单的方法或Apollo Server规范方法将所有已解析的字段名称转换为camelCase?

我想使用驼峰式的情况来定义我的类型:

type SomeType {
  id: ID!
  createdTime: String
  updatedTime: String
}

但是REST API返回的对象如下:

{
  "id": "1234"
  "created_time": "2018-12-14T17:57:39+00:00",
  "updated_time": "2018-12-14T17:57:39+00:00",
}

我真的很想避免在我的解析器中手动规范化字段名称,即

Query: {
    getObjects: () => new Promise((resolve, reject) => {
        apiClient.get('/path/to/resource', (err, response) => {
            if (err) {
                return reject(err)
            }

            resolve(normalizeFields(response.entities))
        })
    })
}

鉴于我希望解析器的数量很大,因此这种方法似乎容易出错。还感觉规范化字段名称不应该由解析程序负责。Apollo Server是否有某些功能可以让我批发标准化字段名称或覆盖默认字段分辨率?



1> Joe Hawkins..:

@Webber提出的解决方案是有效的。

也可以将fieldResolver参数传递给ApolloServer构造函数,以覆盖程序graphql包提供的默认字段解析器。

const snakeCase = require('lodash.snakecase')

const snakeCaseFieldResolver = (source, args, contextValue, info) => {
  return source[snakeCase(info.fieldName)]
}

const server = new ApolloServer({ 
  fieldResolver: snakeCaseFieldResolver,
  resolvers,
  typeDefs
})

请参阅源代码中的默认字段解析器graphql

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有