【问题标题】:Can I map entity field names to alias column names in TypeORM?我可以将实体字段名称映射到 TypeORM 中的别名列名称吗?
【发布时间】:2019-10-12 03:39:03
【问题描述】:

我正在使用 TypeORM 从 Rails 迁移到 NestJs。 由于历史原因,Rails 中的表名和列名是 snaked_cased - 我不想把这个讨厌的东西复制到我们的 NestJs/React 端。

我可以在 NestJS (typeorm) 中创建名为 firstName 的实体字段,但在我的数据库中映射到名为 first_name 的列吗?

我的桌子

+-------------+--------------+----------------------------+
|                      system_users                       |
+-------------+--------------+----------------------------+
| id          | int(11)      | PRIMARY KEY AUTO_INCREMENT |
| first_name  | varchar(100) |                            |
| last_name   | varcahr(100) |                            |
+-------------+--------------+----------------------------+

我的用户实体类

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity({ name: 'system_users' })
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ length: 255 })
  first_name: string; // <-- I WANT THIS TO BE firstName (camelCased)

  @Column({ length: 255 })
  last_name: string;  // <-- I WANT THIS TO BE lastName (camelCased)
}

【问题讨论】:

    标签: nestjs typeorm


    【解决方案1】:

    如果其他人遇到此问题,请知道 TypeORM 支持 naming strategies
    甚至还有一个 snake case naming strategy 的包

    【讨论】:

      【解决方案2】:

      我终于在文档中找到了我想要的东西。 @Column 属性接收许多属性,其中之一是name,它可以定义与字段关联的列名。

      我更新的实体:

      @Entity({ name: 'system_users' })
      export class User {
        @PrimaryGeneratedColumn()
        id: number;
      
        @Column({ length: 255, name: "first_name" })
        firstName: string; 
      
        @Column({ length: 255, name: "last_name" })
        lastName: string; 
      }
      

      【讨论】:

      • 这和我看到的一样 100%。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多