尝试在nest.js项目中集成迁移,我从typeorm运行了migration:create命令,没有问题,但当我尝试使用migration:generate生成迁移时,如下所示:yarn run typeorm migration:generate ./src/migrations -d ./src/database/database.provider.ts
是./src/migrations文件夹,我希望迁移到./src/database/database.provider.ts文件夹中,我有我的数据源,稍后我会向您展示,关键是我得到了以下错误:”
Error: Given data source file must contain export of a DataSource instance
at Function.loadDataSource (C:\Proyectos\AmazingDigisignBackend\documents-service-nest\node_modules\src\commands\CommandUtils.ts:49:19)
at async Object.handler (C:\Proyectos\AmazingDigisignBackend\documents-service-nest\node_modules\src\commands\MigrationGenerateCommand.ts:73:26)
Done in 3.74s.
这是database.provider.ts:
import {DynamicModule} from "@nestjs/common";
import {ConfigService} from "@nestjs/config";
import {TypeOrmModule} from "@nestjs/typeorm";
import {DataSourceOptions} from "typeorm";
export const DatabaseProvider: DynamicModule = TypeOrmModule.forRootAsync({
inject: [ConfigService],
async useFactory(config: ConfigService) {
return {
type: 'postgres',
host: config.get('DATABASE_HOST'),
username: config.get('DATABASE_USERNAME'),
password: config.get('DATABASE_PASSWORD'),
port: config.get('DATABASE_PORT'),
database: config.get('DATABASE_NAME'),
autoLoadEntities: true,
synchronize: false,
migrations: [__dirname + '/../src/migrations/*{.ts,.js}'],
} as DataSourceOptions;
}
})
这是我的数据库模块:
import {Module} from '@nestjs/common';
import {DatabaseProvider} from './database.provider';
@Module({
imports: [DatabaseProvider],
exports: [DatabaseProvider]
})
export class DatabaseModule {
};
我尝试使用旧的typeorm命令,如:yarn run typeorm migration:generate -n newMigration
.我已经检查了一百次文档,他们没有告诉你如何使用typeormmoduleconfig作为数据源生成迁移,我想创建一个ormconfig.json,但我不喜欢它,如果没有其他工作,我想我没有太多的选择。
1条答案
按热度按时间rta7y2nd1#
您提供给
yarn run typeorm migration:generate
命令的文件database.provider.ts
导出的是NestJS动态模块,而不是TypeORM CLI可以使用的DataSource。但是,您可以添加一个在
database.provider.ts
中构建DataSource选项的函数,然后在一个单独的文件中重用该函数来构建CLI所需的配置。在您的database.provider.ts中:
和TypeORM cli的配置文件,在单独的文件中(例如
database.config.ts
)因此,您可以这样调用CLI:
yarn run typeorm migration:generate ./src/migrations -d ./src/database/database.config.ts
此外,TypeORM CLI不支持选项
autoLoadEntities
。