如何正确处理 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.
Migrations
这个方案用的最多,生产中一定要用
yarn typeorm migration:generate -n migrationName
这将根据您的实体为您生成一个包含数据库指令的迁移文件。您只需要 运行 迁移以应用数据库更改。
yarn typeorm migration:up
我想我找到了快速解决方案,我不得不删除 dist
文件夹,一切正常
我在编码中处理实体列时遇到了一些困难,我的意思是从代码中添加或 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.
Migrations
这个方案用的最多,生产中一定要用
yarn typeorm migration:generate -n migrationName
这将根据您的实体为您生成一个包含数据库指令的迁移文件。您只需要 运行 迁移以应用数据库更改。
yarn typeorm migration:up
我想我找到了快速解决方案,我不得不删除 dist
文件夹,一切正常