Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
61
rated 0 times [  67] [ 6]  / answers: 1 / hits: 17051  / 5 Years ago, fri, january 25, 2019, 12:00:00

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.


More From » node.js

 Answers
17

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]
}),

[#52715] Monday, January 21, 2019, 5 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
dusty

Total Points: 739
Total Questions: 97
Total Answers: 85

Location: Angola
Member since Wed, Apr 13, 2022
2 Years ago
;