我被告知在我的数据库中使用蛇盒而从未使用过来。 JSON API表示在对象键的单词之间使用短划线。 Javascript,每个人都使用camelCase。
如果我有一个RAILS服务器从SQL数据库获取数据,将其作为json发送并在javascript中使用,我真的需要在这些表示法之间进行转换吗?
为什么不到处都使用蛇盒?
答案 0 :(得分:2)
对于JavaScript,如果您想使用驼峰案例,则由您(或项目指南)决定。但是因为几乎每个majaor库和核心API都使用驼峰的情况下做同样的事情是个好主意,因为那样你就不需要考虑是否需要使用其中一个。
对于DBMS,它取决于操作系统和DBMS,因为使用混合字母时可能会遇到技术问题。例如。如果你有一个在Windows系统上运行的MySQL数据库,那么MySQL就不会关心表名的情况,因为文件系统不区分大小写。因此,Windows上的默认MySQL配置会自动将所有表名转换为小写。只要您的DBMS将保留在Windows机器上,这不会有问题,但是一旦您决定切换到Linux基本服务器,那么将数据从Windows迁移到Linux机器箱会遇到很大问题。
为了不依赖于这些问题,通常只使用带有DBMS的小写字母,无论DBMS是否具有带有大写字母的问题。使用小写字母肯定没有问题,如果问题可能需要用大写字母进行调查。
答案 1 :(得分:0)
你真的不需要按标准转换它。遵循命名约定,以便一组开发人员在同一个应用程序上工作。
最佳做法是遵循组织定义的命名约定,以便在开发人员之间更好地理解代码。
答案 2 :(得分:0)
您可以使用此库在两者之间进行转换: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 }
]
}
*/
答案 3 :(得分:0)
我认为我们遇到的主要痛苦是我们试图遵循语言社区内建立的约定,但是当 JSON 从一种语言序列化然后解析为另一种语言的映射时,当变量或对象键现在不遵循相同的约定。这就是为什么我可能会停止在前端遵循骆驼案例约定并在任何地方回到蛇案例的原因之一,因为如果整个项目的代码库中只有一种风格,那么对我来说认知开销会减少。当然,这是一个个人项目,我保证在工作中会遇到很多阻力。