首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

,可以通过使用GraphQL的resolver中间件来实现。

首先,需要在resolver中间件中定义一个转换函数,将snake_case字段名转换为camelCase。可以使用JavaScript的字符串操作方法来实现这个转换,例如使用split()和map()方法将字符串分割为单词数组,并将每个单词的首字母大写,然后使用join()方法将单词数组合并为一个字符串。

以下是一个示例的转换函数:

代码语言:txt
复制
function snakeToCamel(str) {
  return str.replace(/(_\w)/g, function(m) {
    return m[1].toUpperCase();
  });
}

然后,在resolver中间件中使用这个转换函数来处理每个字段名。可以通过遍历resolver中的每个字段,将snake_case字段名转换为camelCase,并将转换后的字段名作为resolver的属性。

以下是一个示例的resolver中间件的实现:

代码语言:txt
复制
const snakeToCamelMiddleware = (resolver) => {
  return async (parent, args, context, info) => {
    const result = await resolver(parent, args, context, info);

    if (result) {
      Object.keys(result).forEach((key) => {
        const camelCaseKey = snakeToCamel(key);
        result[camelCaseKey] = result[key];
        delete result[key];
      });
    }

    return result;
  };
};

最后,在Apollo Server的配置中使用这个resolver中间件。可以通过在resolver的定义中使用applyMiddleware()方法来应用这个中间件。

以下是一个示例的Apollo Server配置:

代码语言:txt
复制
const { ApolloServer } = require('apollo-server-express');
const express = require('express');
const { applyMiddleware } = require('graphql-middleware');

const typeDefs = // 定义GraphQL的类型定义
const resolvers = // 定义GraphQL的解析器

const server = new ApolloServer({
  typeDefs,
  resolvers: applyMiddleware(resolvers, snakeToCamelMiddleware),
});

const app = express();
server.applyMiddleware({ app });

app.listen({ port: 4000 }, () =>
  console.log(`Server running at http://localhost:4000${server.graphqlPath}`)
);

通过以上步骤,就可以在apollo-server-express中将snake_case转换为camelCase字段名。这样可以提高API的可读性和一致性,使字段名更符合JavaScript的命名规范。

对于腾讯云相关产品和产品介绍链接地址,可以根据具体的需求和场景选择适合的产品。腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,可以根据具体的需求进行选择和使用。具体的产品介绍和链接地址可以在腾讯云官网上进行查找和了解。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

12个超好用的IntelliJ IDEA 插件!你用过几个?

其实笔者也是一枚从EclipseIDEA的探索者,随着近期的不断开发实践和调试,逐步体会到这款智能IDE带来的巨大开发便利,强大的插件功能支持下,诸如对Git和Maven的支持简直让人停不下来,各种代码提示...切换样式(camelCase, hyphen-lowercase, HYPHEN-UPPERCASE, snake_case, SCREAMING_SNAKE_CASE, dot.case, words...lowercase, Words Capitalized, PascalCase) 转换为SCREAMING_SNAKE_CASE (或转换为camelCase) 转换为 snake_case (或转换为...camelCase) 转换为dot.case (或转换为camelCase) 转换为hyphen-case (或转换为camelCase) 转换为hyphen-case (或转换为snake_case)...转换为camelCase (或转换为Words) 转换为camelCase (或转换为lowercase words) 转换为PascalCase (或转换为camelCase) 选定文本大写 样式反转

7.5K50

linux shell:将蛇形命名法(snake-case)变量字符串转为驼峰命名法(camel-case)变量字符串

通过搜索引擎找到stackoverflow上找到了下面这个帖子4 与我的需求基本一样,是想把一个脊柱命名法(spinal-case)字符串转换为驼峰命名法(camel-case)的字符串。...答主给了3个解决方案 对于上面三个方案我都做了测试,linux(bash),win32/msys2下三个方案都能正确转换,但是macOS(Big Sur 11.4)下第二,三方案可以正确转换,...不论是用zsh还是bash,如下图,我初步分析认为是我现在用的这个版本的sed不太对或某些开头没打开导致不能识别\U控制码: 根据上面的解决方案整理一下,用来将以'-','_'连接的变量名字符串统一为驼峰命名法的变量名..., snake_case, spinal-case…》 ↩︎ 《5 Basic REST API Design Guidelines》 ↩︎ 《What is camelCase, PascalCase..., kebab-case and snake_case?》

1.6K20

12 个酷炫的 IntelliJ IDEA 插件

自:博客园,作者:JaJian 链接:www.cnblogs.com/jajian/p/8081658.html 今天介绍一下IDEA的一些炫酷的插件,IDEA强大的插件库,不仅能给我们带来一些开发的便捷...切换样式(camelCase, hyphen-lowercase, HYPHEN-UPPERCASE, snake_case, SCREAMING_SNAKE_CASE, dot.case, words...lowercase, Words Capitalized, PascalCase) 转换为SCREAMING_SNAKE_CASE (或转换为camelCase) 转换为 snake_case (或转换为...camelCase) 转换为dot.case (或转换为camelCase) 转换为hyphen-case (或转换为camelCase) 转换为hyphen-case (或转换为snake_case)...转换为camelCase (或转换为Words) 转换为camelCase (或转换为lowercase words) 转换为PascalCase (或转换为camelCase) 选定文本大写 样式反转

1.8K21

最好用的 IntelliJ 插件 Top 10

JRebel使开发人员能够相同的时间内完成更多的工作,让开发人员的编码过程变得更加流畅。 ?..., dot.case, words lowercase, Words Capitalized, PascalCase) 转换为SCREAMINGSNAKECASE (或转换为camelCase) 转换为...snake_case (或转换为camelCase) 转换为dot.case (或转换为camelCase) 转换为hyphen-case (或转换为camelCase) 转换为hyphen-case...(或转换为snake_case) 转换为camelCase (或转换为Words) 转换为camelCase (或转换为lowercase words) 转换为PascalCase (或转换为camelCase...BrowseWordAtCaret 允许轻松浏览下一个/上一个字的插入符号,并高亮显示所选单词的外观 用法:使用CTRL-ALT-UP,CTRL-ALT-DOWN浏览 注意:默认键盘映射中,这个快捷键也适用于下一个

2.4K100

盘点开发者最爱的 IntelliJ 插件 Top 10

JRebel使开发人员能够相同的时间内完成更多的工作,让开发人员的编码过程变得更加流畅。..., dot.case, words lowercase, Words Capitalized, PascalCase) 转换为SCREAMINGSNAKECASE (或转换为camelCase) 转换为...snake_case (或转换为camelCase) 转换为dot.case (或转换为camelCase) 转换为hyphen-case (或转换为camelCase) 转换为hyphen-case...(或转换为snake_case) 转换为camelCase (或转换为Words) 转换为camelCase (或转换为lowercase words) 转换为PascalCase (或转换为camelCase...BrowseWordAtCaret 允许轻松浏览下一个/上一个字的插入符号,并高亮显示所选单词的外观 用法:使用CTRL-ALT-UP,CTRL-ALT-DOWN浏览 注意:默认键盘映射中,这个快捷键也适用于下一个

1.7K70

各种 IntelliJ IDEA 酷炫插件推荐

安装成功之后重启,菜单栏的VIew标签>点击Set Background Image(没安装插件是没有这个标签的),弹框中路由选择到本地图片,点击OK即可。..., Words Capitalized, PascalCase) 转换为SCREAMINGSNAKECASE (或转换为camelCase) 转换为 snake_case (或转换为camelCase)...转换为dot.case (或转换为camelCase) 转换为hyphen-case (或转换为camelCase) 转换为hyphen-case (或转换为snake_case) 转换为camelCase...(或转换为Words) 转换为camelCase (或转换为lowercase words) 转换为PascalCase (或转换为camelCase) 选定文本大写 样式反转 7.Alibaba Java...pr=idea Eclipse Code Formatter 使用 Eclipse 的代码格式化风格,一个团队中如果公司有规定格式化风格,这个可以使用。

1.2K20

手把手教你完成 TypeScript Hard 难度题

type-challenges/blob/main/questions/01383-hard-camelize/README.md 题目如下: 实现 Camelize 类型: 将对象属性名从 蛇形命名(下划线命名) 转换为...小驼峰命名 Camelize<{ some_prop: string, prop: { another_prop: string }, array: [{ snake_case: string...string; // number Dog 可以分发给 Animal,属于 Animal 的子类型,Example 会得到 number 类型 条件类型中的类型推断(infer 关键字) infer 可以...{ [P in keyof T]: T[P] } : T 现在先将 key 转换为 camelCase,调用一开始实现的 camelCase 方法,但是直接将 P in keyof T...处理对象时,T[P] 可能是数组,所以 Camelize 的入参除了是对象,还可能是数组,需要在一开始新增判断数组的逻辑 type Camelize = T extends any[] ?

25010

手把手教你完成 TypeScript Hard 难度题

type-challenges/blob/main/questions/01383-hard-camelize/README.md 题目如下: 实现 Camelize 类型: 将对象属性名从 蛇形命名(下划线命名) 转换为...小驼峰命名 Camelize<{ some_prop: string, prop: { another_prop: string }, array: [{ snake_case: string...string; // number Dog 可以分发给 Animal,属于 Animal 的子类型,Example 会得到 number 类型 条件类型中的类型推断(infer 关键字) infer 可以...{ [P in keyof T]: T[P] } : T 现在先将 key 转换为 camelCase,调用一开始实现的 camelCase 方法,但是直接将 P in keyof T...处理对象时,T[P] 可能是数组,所以 Camelize 的入参除了是对象,还可能是数组,需要在一开始新增判断数组的逻辑 type Camelize = T extends any[] ?

21010

Redisant Toolbox——面向开发者的多合一工具箱

CSV JSON to YAML:将 JSON 字符串转换为 YAML YAML to JSON:将 YAML 字符串转换为 JSON JWT Debugger:校验或签署 JWT 令牌 Language...Beautify:格式化各种语言的源代码 Number Base Converter:二进制、八进制、十进制、十六进制和其他数字基数之间转换 QR Code Reader/Generator:读取二维码或生成二维码...Random Data Generator:生成随机段落、单词、电子邮件、姓名等 RegExp Tester:针对正则表达式测试字符串并找到匹配项 String Case Converter:转换 camelCase...、PascalCase、snake_case、kebab-case 风格的变量 String Inspector:检测ASCII/Unicode码、字符串长度、字符数、字数、行数 Text Diff Checker...Parser:Query StringJSON,解析URL协议、主机、端口等 UUID/GUID Generate/Decode:生成 UUID、ULID、Nano ID Offline OCR:将图像转换为文本

4.6K60

IntelliJ IDEA 18 周岁,吐血推进珍藏已久的必装插件

当然,这些方法不止IDE中的代码调用中需要用到,真正线上部署的时候也需要有,所以,还需要使用maven引入一个lombok的包。...文本转换操作 切换样式(camelCase, hyphen-lowercase, HYPHEN-UPPERCASE, snake_case, SCREAMING_SNAKE_CASE, dot.case..., words lowercase, Words Capitalized, PascalCase) 转换为SCREAMING_SNAKE_CASE (或转换为camelCase) 转换为 snake_case...(或转换为camelCase) 转换为dot.case (或转换为camelCase) 转换为hyphen-case (或转换为camelCase) 转换为hyphen-case (或转换为snake_case...) 转换为camelCase (或转换为Words) 转换为camelCase (或转换为lowercase words) 转换为PascalCase (或转换为camelCase) 选定文本大写 样式反转

1.5K20

10 个解放双手的 IDEA插件,少些冤枉代码(第三弹)

不过,某些情况下,我们需要将已有实体类转换为JSON格式数据,那我通常不得不依赖于手动执行单元测试或在main方法中,使用JSON处理库(例如fastjson等)来实现对象到JSON字符串的转换,是一件比较麻烦的事情...使用CamelCase可以 kebab-case,SNAKE_CASE,PascalCase,camelCasesnake_case 和 空格风格之间切换。...验证一下不同级别的日志在控制台输出的情况,不同级别显示不同颜色,这样控制台查看日志就一目了然了。...公众号:程序员小富"); log.trace("公众号:程序员小富");}6、GenerateO2OGenerateO2O插件可以让我们少些很多代码,比如在开发接口时,常常需要将查询得到的PO对象转换为...7、Smart inputSmart input解决了一件很烦的事,它能帮我们不同的编码区域内切换输入法状态。

2.2K10
领券