一个应用程序中的不同的variables名称约定

这是一个非常微不足道的问题。 我只是好奇如何以“专业”的方式来处理这个问题。

我试图坚持variables命名约定。 对于NodeJs我正在做camelCasing。 对于数据库,我正在使用PostgreSQL并使用underscore_casing。

现在问题出现在我从PostgreSQL查询数据时。 我将得到一个用户对象以下格式,

{user_id: 1, account_type : "Admin"} 

我可以直接将这个对象传递给服务器端渲染,并且必须使用下划线框来访问account_type。 当然,我可以手动创build一个新的用户JSON对象与属性userIdaccountType但这是不必要的工作。

是否可以遵循两种语言的variables命名约定,并避免在某些文件中混合使用variables名? 什么是保持组织的好方法?

这是解决这个问题的两个好办法。 最简单的一个 – 不做转换,使用确切的数据库名称。 第二个是自动骆驼列。

无论哪种方式,您都应该遵循所有PostgreSQL声明的下划线表示法,因为如果需要的话,您可以select在稍后的时间激活应用程序中的骆驼套接字。 不要在数据库中使用骆驼案例,否则你会在以后的很多痛苦中结束。

如果你想要两全其美的话,那么对所有的PostgreSQL声明遵循下划线标记,并且在你读取数据时将其转换为驼峰式。

下面是如何正确使用pg-promise从事件接收示例复制的示例:

 // Example below shows the fastest way to camelize column names: var options = { receive: function (data, result, e) { camelizeColumns(data); } }; function camelizeColumns(data) { var template = data[0]; for (var prop in template) { var camel = pgp.utils.camelize(prop); if (!(camel in template)) { for (var i = 0; i < data.length; i++) { var d = data[i]; d[camel] = d[prop]; delete d[prop]; } } } } 

另请参阅以下文章: 列名中的Pg-promise和区分大小写 。

我也一直在努力,我认为除非你重写来自数据库的对象,否则真的没有办法避免这种丑陋。 幸运的是,这在Javascript中并不难:

 const fromDBtoJS = (obj) => { // declare a variable to hold the result const result = {}; // iterate over the keys on the object Object.keys(obj).forEach((key) => { // adjust the key const newKey = key.replace(/_[az]/g, (x) => x[1].toUpperCase()); // add the value from the old object with the new key result[newKey] = obj[key]; }); // return the result return result; }; 

这是一个JSFiddle 。 上面的“replace”代码在这里find

如果您想在应用程序中使用模型类,可以将这些代码合并到构造函数或数据库加载方法中,以便自动处理所有内容。