gpt4 book ai didi

postgresql - TypeORM 和 Postgres 竞争的命名风格

转载 作者:行者123 更新时间:2023-12-02 17:00:20 25 4
gpt4 key购买 nike

我们正在使用 TypeORM 和 Postgresql,我对命名约定很好奇。

考虑到数据库有完全合适的样式和命名约定,与 Javascript 使用的完美样式和命名约定不同,强制数据库使用代码约定或强制代码使用数据库约定是否被认为是更好的做法,或者翻译所有内容?

例如:

通常的做法是使用 Joe Celko's SQL Programming Style 中定义的 SQl 样式。对于数据库。这提倡使用 Snake_case 作为列名称。

在使用 JavaScript 和 typeorm 的所有文档进行编程时,使用驼峰命名法命名变量也是常见的做法。

因此,当这两个世界发生冲突时,最佳实践是强制一个世界到另一个世界还是翻译定义中的每个多词实体来进行映射。

这实际上并不是如何做到这一点的问题,而是是否存在一种常见做法的问题。

表示用户 ID 的列的三种可能性是:

1: Translate everything
@Column( { name: user_id } )
userId: number;

2: Use the database convention in the code
@Column()
user_id: number;

3: Use the coding convention in the database
@Column()
userId: number

最佳答案

您可以通过调整 ormconfig.js 以支持 Typeorm 命名策略包来在 TypeOrm 中支持两者。这将允许您在代码中采用编码约定,并在数据库中采用数据库命名约定。

可以通过以下方式设置:

npm i --save typeorm-naming-strategies

然后在 ormconfig.js 中添加以下行:

const SnakeNamingStrategy = require('typeorm-naming-strategies')
.SnakeNamingStrategy;

module.exports = {
name: 'development',
type: 'postgres',
host: 'localhost',
port: 5432,
...
namingStrategy: new SnakeNamingStrategy(),
}

在 postgres 中命名列时,TypeOrm 现在将遵循 Snake_case 约定

关于postgresql - TypeORM 和 Postgres 竞争的命名风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55248938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com