【问题标题】:Why use Camel Case for JS and Snake Case for your DB?为什么要使用 Camel Case for JS 和 Snake Case for your DB?
【发布时间】:2015-10-13 04:56:23
【问题描述】:

有人告诉我在我的数据库中使用蛇盒,而不是骆驼盒。 JSON API 说要在单词之间使用破折号作为对象键。 Javascript,大家都用camelCase。

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

为什么不到处使用蛇盒?

【问题讨论】:

  • 如果您是为自己编程,请使用您喜欢的任何东西。如果您正在为您的员工编程,您可以使用他们需要的任何东西。
  • do I really need to convert between these notations - someValue != some_value != some-value - 因此,如果您尝试访问 some value,则必须在这三种格式之间进行转换> 。附言我在 JSON 规范中看不到任何使用破折号的内容。但是,我不知道你真正的意思是 JASON API

标签: javascript sql json camelcasing


【解决方案1】:

对于 JavaScript,是否使用驼峰式大小写取决于您(或项目的指导方针)。但是因为几乎每个主要库和核心 API 都使用骆驼案例,所以这样做是个好主意,因为这样您就不需要考虑是否需要使用其中一个。

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

为了不依赖于这些问题,通常只在 DBMS 中使用小写字母,无论 DBMS 是否存在带有大写字母的问题。小写字母肯定没有问题,大写字母如果有问题,则需要进行调查。

【讨论】:

  • 感谢您的详细回答。所以我会在前端使用camelCase。这是否意味着我应该使用 JS 将 json“get”请求转换为 camelCase?我真的很难弄清楚如何在 AngularJS 中做到这一点
  • 如果您要在 linux 上部署,我觉得这不值得。谁要手动将 db 数据转换为 JS 的驼峰式大小写?
【解决方案2】:

您确实不需要按照标准对其进行转换。为了让一组开发人员在同一个应用程序上工作,遵循命名约定。

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

【讨论】:

    【解决方案3】:

    您可以使用此库在两者之间进行转换: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 }
          ]
        }
      */
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2016-07-29
        • 1970-01-01
        • 1970-01-01
        • 2023-02-26
        • 2014-06-13
        • 1970-01-01
        • 2023-02-08
        • 2013-10-03
        • 1970-01-01
        相关资源
        最近更新 更多