I set up a ConfigService as described in docs https://docs.nestjs.com/techniques/configuration
how can I use this service with the the TypeOrmModule?
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'root',
database: 'test',
entities: [__dirname + '/**/*.entity{.ts,.js}'],
synchronize: true,
}),
Run Code Online (Sandbox Code Playgroud)
请参阅https://docs.nestjs.com/techniques/database 异步配置章节
import {ConfigService} from './config.service';
import {Module} from '@nestjs/common';
import {TypeOrmModule} from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
useFactory: (config: ConfigService) => config.get('database'),
inject: [ConfigService],
}),
],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
在NestJS 10.0.0中,执行此操作的超干净方法如下:
.env文件。# DATABASE
DB_HOST=localhost
DB_PORT=5432
DB_NAME=demo-db
DB_USERNAME=postgres
DB_PASSWORD=example
Run Code Online (Sandbox Code Playgroud)
registerAs。// config/database.config.ts
import { registerAs } from '@nestjs/config';
import { TypeOrmModuleOptions } from '@nestjs/typeorm';
export default registerAs(
'database',
(): TypeOrmModuleOptions => ({
type: 'postgres',
host: process.env.DB_HOST,
port: +process.env.DB_PORT,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
autoLoadEntities: true,
synchronize: true,
}),
);
Run Code Online (Sandbox Code Playgroud)
databaseConfig到 main 中app.module.ts,如下所示:// app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ConfigModule } from '@nestjs/config';
import databaseConfig from './config/database.config';
@Module({
imports: [
ConfigModule.forRoot(),
TypeOrmModule.forRoot(databaseConfig()),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
此外,如果您希望database在模块服务之一中访问此配置,您可以按如下方式进行:
// app.module.ts
@Module({
imports: [
ConfigModule.forRoot({ load: [databaseConfig] }),
TypeOrmModule.forRoot(databaseConfig()),
...
],
...
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
// [feature].module.ts
@Module({
imports: [ConfigModule],
controllers: [FeatureController],
providers: [FeatureService],
})
export class FeatureModule {}
Run Code Online (Sandbox Code Playgroud)
// feature.service.ts
@Injectable()
export class FeatureService {
constructor(private configService: ConfigService) {}
printConfiguration() {
console.log(this.configService.get('database'));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |