我可以在typeorm中将实体字段名称映射为别名列名称吗?

时间:2019-05-26 06:29:37

标签: nestjs typeorm

我正在使用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)
}

2 个答案:

答案 0 :(得分:0)

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

我更新的实体:

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

  @Column({ length: 255, name: "first_name" })
  firstName: string; 

  @Column({ length: 255, name: "last_name" })
  last_name: string; 
}

答案 1 :(得分:0)

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