为什么在JS中使用Camel Case而在DB中使用Snake Case ?

Why use Camel Case for JS and Snake Case for your DB?

本文关键字:Case DB Snake 而在 为什么 Camel JS      更新时间:2023-09-26

我被告知在我的DB中使用蛇形案例,而不是骆驼案例。JSON API要求在单词之间使用破折号表示对象键。Javascript,大家都用camelCase

如果我有一个RAILS服务器从SQL数据库获取数据,将其作为json发送并在javascript中使用,我真的需要在这些符号之间转换吗?

为什么不在所有地方都使用蛇案呢?

对于JavaScript,如果您想使用驼峰大小写,则取决于您(或项目的指导方针)。但是因为几乎每个主要的库和核心API都使用驼峰用例,所以这样做是一个好主意,因为这样你就不需要考虑你是需要使用一个还是另一个了。

对于DBMS,这取决于操作系统和DBMS,因为使用混合字母时可能会遇到技术问题。例如,如果你有一个运行在windows系统上的MySQL数据库,那么MySQL将不会关心表名的大小写,因为文件系统是不区分大小写的。因此,Windows上的默认MySQL配置将自动将所有表名转换为小写。只要你的DBMS还在windows机器上,这就不是问题,但是一旦你决定切换到Linux基础服务器,那么将数据从windows迁移到Linux机器上就会遇到巨大的问题。

为了不依赖于这些问题,通常在DBMS中只使用小写字母,不管DBMS是否会有问题使用大写字母。使用小写字母肯定没有问题,而使用大写字母,如果可能有问题,你需要做调查。

您真的不需要按照标准来转换它。遵循命名约定是为了让一组开发人员在同一个应用程序上工作。

遵循组织定义的命名约定是一种最佳实践,以便开发人员更好地理解代码。

您可以使用这个库在两个case-converter之间进行转换它将snake_case转换为camelCase,反之亦然

  const caseConverter = require('case-converter')
  const snakeCase = {
    an_object: {
      nested_string: 'nested content',
      nested_array: [{ an_object: 'something' }]
    },
    an_array: [
      { zero_index: 0 },
      { one_index: 1 }
    ]
  }
  const camelCase = caseConverter.toCamelCase(snakeCase);
  console.log(camelCase)
  /*
    {
      anObject: {
        nestedString: 'nested content',
        nestedArray: [{ anObject: 'something' }]
      },
      anArray: [
        { zeroIndex: 0 },
        { oneIndex: 1 }
      ]
    }
  */

我认为我们经历的主要痛苦是我们试图遵循语言社区中建立的约定,但是当JSON从一种语言序列化然后解析为另一种语言的映射时,当变量或对象键现在不遵循相同的约定时,会有一些烦恼。这就是为什么我可能会在前端停止遵循骆驼式惯例,而回到蛇式惯例的原因之一,因为如果在整个项目的代码库中只有一种风格,对我来说认知开销更少。当然,这是一个个人项目,我保证在工作中会遇到很多阻力。