我是 GraphQL 和 Apollo Server 的新手,尽管我已经在文档和 Google 中搜索了答案。我正在使用 apollo-server-express 从第 3 方 REST API 获取数据。 REST API 使用 Snake_case 作为其字段。是否有一种简单的方法或 Apollo Server 规范的方法将所有解析的字段名称转换为驼峰命名法?
我想使用驼峰式大小写来定义我的类型,例如:
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 是否有某些功能允许我批量规范化字段名称或覆盖默认字段解析?
@Webber 提出的解决方案是有效的。
还可以将 fieldResolver 参数传递给 ApolloServer 构造函数来覆盖由 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源代码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)