如何正确处理 nestjs 中的 typeorm 实体列

how to proper handling typeorm entity columns in nestjs

我在编码中处理实体列时遇到了一些困难,我的意思是从代码中添加或 removing/deleting 它们会导致数据库中出现一些问题,这就是我尝试做的事情

@Entity('user')
export class User {
  ....  other colums
  @Column()
  name: string;
}

上面的代码将在数据库中生成 user table,并带有适当的列,即名称,

现在这是我的问题,稍后我决定将列 name 更改为 fullname

我收到以下错误 QueryFailedError: column "fullname" of relation "user" contains null values

即使我删除 user table 并重新 运行 应用程序,

请协助!

要使用 TypeORM 处理数据库修改,您可以使用两种解决方案,自动数据库更改同步和手动数据库更改迁移。

Synchronize
设置synchronize参数为true,自动更新数据库。

TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'root',
      database: 'test',
      entities: [],
      synchronize: true,
    }),

WARNING
Setting synchronize: true shouldn't be used in production - otherwise you can lose production data.

Learn more about synchronize

Migrations
这个方案用的最多,生产中一定要用

yarn typeorm migration:generate -n migrationName

这将根据您的实体为您生成一个包含数据库指令的迁移文件。您只需要 运行 迁移以应用数据库更改。

yarn typeorm migration:up

Learn more about migrations

我想我找到了快速解决方案,我不得不删除 dist 文件夹,一切正常