TypeORM 和 Postgres 竞争命名风格

Ber*_*e B 8 postgresql typeorm

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

考虑到数据库有完全合适的样式和命名约定,这些样式和命名约定与用于 Javascript 的完美分开,强制数据库使用代码约定或强制代码使用数据库约定或翻译被认为是更好的做法吗?一切?

例如:

通常的做法是将Joe Celko 的 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
Run Code Online (Sandbox Code Playgroud)

Dan*_*lay 26

你可以通过调整你的 ormconfig.js 来支持 TypeOrm 中的两者,以支持 Typeorm Naming Strategies 包。这将允许您在数据库中的代码和数据库命名约定中具有编码约定。

它可以通过以下方式设置:

npm i --save typeorm-naming-strategies
Run Code Online (Sandbox Code Playgroud)

然后在你的 ormconfig.js 中,添加以下几行:

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

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

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

  • 这看起来是一个非常有用的包。我还没有尝试过,但会尝试一下。 (2认同)