在nodejs中使用mysql的命名约定建议

时间:2019-09-25 05:17:05

标签: mysql node.js api naming-conventions backend

请给我您的指导。

我正在使用带有mysql数据库的节点(不使用orm)。

我对mysql使用snake_case命名约定。

我的问题是:

在节点中, 我应该使用snake_case还是使用camelCase?

例如在models / movie.js:

snake_case:

return db.execute(SELECT title, daily_rental_rate FROM movies);

结果发送给客户端:

{
title: 'abc',
daily_rental_rate: 20
}

camel_case:

return db.execute(SELECT title, daily_rental_rate as dailyRentalRate FROM movies);

结果发送给客户端:

{
title: 'abc',
dailyRentalRate: 20
}

非常感谢/ \

1 个答案:

答案 0 :(得分:0)

对于JSON大小写没有固定的约定,但是大多数API倾向于将camelCase用于属性,包括Google,请参见其样式指南here

您还可以在JavaScript中映射对象属性,而不必在查询中手动进行。这使您可以相对灵活地使用外壳,如果以后要更改,甚至可以更改为kebab-case或snake_case。本示例使用lodash库转换对象大小写。

const _ = require("lodash");

function objectToCamelCase(obj) {
    return _.mapKeys(obj, (v, k) => _.camelCase(k))
}

let rows = db.execute("SELECT title, daily_rental_rate FROM movies");
console.log("Result (snake_case): ", rows);
rows = rows.map(objectToCamelCase);
console.log("Result (camelCase):", rows);

结果可能如下所示:

结果(snake_case):

[
    {
        "title": "The Shawshank Redemption",
        "daily_rental_rate": "€2.99"
    },
    {
        "title": "Ferris Bueller's Day Off",
        "daily_rental_rate": "€2.99"
    }
]

结果(camelCase):

[
    {
        "title": "The Shawshank Redemption",
        "dailyRentalRate": "€2.99"
    },
    {
        "title": "Ferris Bueller's Day Off",
        "dailyRentalRate": "€2.99"
    }
]