I have two .env files like dev.env
and staging.env
. I am using typeorm as my database ORM. I would like to know how to let typeorm read either of the config file whenever I run the application. Error: No connection options were found in any of configurations file
from typeormmodule.
Use Secondary DB Connection As we did for the main connection and the Customer entity we need to import TypeOrm into the AccessLog module, but this time we will also need to pass a connection name to the TypeOrmModule. forFeature([Entities, ...], connectionName) method.
Nest uses TypeORM because it's the most mature Object Relational Mapper (ORM) available for TypeScript. Since it's written in TypeScript, it integrates well with the Nest framework. To begin using it, we first install the required dependencies.
You can create a ConfigService that reads in the file corresponding to the environment variable NODE_ENV
:
1) Set the NODE_ENV
variable in your start scripts:
"start:dev": "cross-env NODE_ENV=dev ts-node -r tsconfig-paths/register src/main.ts",
"start:staging": "cross-env NODE_ENV=staging node dist/src/main.js",
2) Read the corresponding .env file in the ConfigService
@Injectable()
export class ConfigService {
private readonly envConfig: EnvConfig;
constructor() {
this.envConfig = dotenv.parse(fs.readFileSync(`${process.env.NODE_ENV}.env`));
}
get databaseHost(): string {
return this.envConfig.DATABASE_HOST;
}
}
3) Use the ConfigService
to set up your database connection:
TypeOrmModule.forRootAsync({
imports:[ConfigModule],
useFactory: async (configService: ConfigService) => ({
type: configService.getDatabase()
// ...
}),
inject: [ConfigService]
}),
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With