要处理命令行迁移,您可以使用
typeorm.config.ts
根目录上的文件。
import { DataSource, DataSourceOptions } from 'typeorm';
import { config } from 'dotenv';
import { resolve } from 'path';
config({ path: resolve(__dirname, '.env') });
const DataSourceConfig = new DataSource({
type: 'mysql',
host: process.env.TYPEORM_HOST,
port: Number(process.env.TYPEORM_PORT),
username: process.env.TYPEORM_USERNAME,
password: process.env.TYPEORM_PASSWORD,
database: process.env.TYPEORM_DATABASE,
migrations: ['./database/migrations/*'],
synchronize: false,
extra: {
charset: 'utf8mb4',
},
migrationsTableName: 'migrations',
});
export default DataSourceConfig;
要在NestJS应用程序中使用typeorm,请创建
typeorm.service.js
文件
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { TypeOrmModuleOptions, TypeOrmOptionsFactory } from '@nestjs/typeorm';
@Injectable()
export class TypeOrmConfigService implements TypeOrmOptionsFactory {
constructor(private configService: ConfigService) {}
public createTypeOrmOptions(): TypeOrmModuleOptions {
return {
type: 'mysql',
host: this.configService.get<string>('TYPEORM_HOST'),
port: this.configService.get<number>('TYPEORM_PORT'),
username: this.configService.get<string>('TYPEORM_USERNAME'),
password: this.configService.get<string>('TYPEORM_PASSWORD'),
database: this.configService.get<string>('TYPEORM_DATABASE'),
autoLoadEntities: true,
};
}
}
并加载此服务
app.module.ts
文件
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
TypeOrmModule.forRootAsync({ useClass: TypeOrmConfigService }),
]
});
export class AppModule {}
然后在里面
package.json
文件,定义命令。请注意,我正在使用
typeorm-ts-node-commonjs
因为我的
typeorm.config.js
文件在Typescript中。
"migration:run": "typeorm-ts-node-commonjs -d typeorm.config.ts migration:run",
"migration:create": "cd database/migrations && typeorm-ts-node-commonjs migration:create",
"migration:revert": "typeorm-ts-node-commonjs -d typeorm.config.ts migration:revert"