我将与数据库的连接设为一个单独的模块
@Module({
imports: [
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: configService => ({
type: configService.get('DATABASE_TYPE'),
host: configService.get('DATABASE_HOST'),
port: configService.get('DATABASE_PORT'),
username: configService.get('DATABASE_USERNAME'),
password: configService.get('DATABASE_PASSWORD'),
database: configService.get('DATABASE_NAME'),
entities: ['./dist/**/*.entity.{js,ts}'],
synchronize: false,
migrationsRun: true,
logging: true,
migrations: ['./dist/modules/database/migration/*.{js,ts}'],
cli: {
migrationsDir: 'src/modules/database/migration',
},
}),
}),
],
})
export class DatabaseModule {}
这在docker容器中工作正常。但是,当我要运行迁移的创建时,会出现错误
Error: No connection options were found in any orm configuration files.
at ConnectionOptionsReader.<anonymous> (/Users/user1/Documents/app/src/connection/ConnectionOptionsReader.ts:43:19)
我的用于迁移的命令
"migration:generate": "ts-node node_modules/.bin/typeorm migration:generate -n",
"migration:run": "ts-node node_modules/.bin/typeorm migration:run",
"migration:revert": "ts-node node_modules/.bin/typeorm migration:revert"
在命令中,我没有指定连接konyig,并且据我所知orm无法找到该连接的配置,我该如何告诉我?
答案 0 :(得分:1)
问题是TypeORM的CLI不知道您的Nest应用程序中使用TypeormModule
来配置连接。 CLI希望以documentation中所述的以下格式之一进行配置。
因此,解决问题的最简单方法是创建一个名为ormconfig.js
的文件,并在此处设置连接配置。像这样:
module.exports = {
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "test",
"password": "test",
"database": "test"
}
假设您的configService
从环境变量中读取值,您还可以执行以下操作:
module.exports = {
"type": "mysql",
"host": process.env.DB_HOST,
"port": process.env.DB_PORT,
"username": process.env.DB_USERNAME,
"password": process.env.DB_PASSWORD,
"database": process.env.DB_DATABASE
}
因此配置与应用程序中的配置相同。