Я хочу установить соединение с базой данных для моего приложения NestJs, используя TypeORM. У меня есть файл конфигурации, который читает все значения из файла .env
import { DotenvConfigOutput, config } from 'dotenv';
const envFound: DotenvConfigOutput = config();
if (!envFound) {
throw new Error('.env file was not found.');
}
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
export const DATABASE_TYPE: string = process.env.DATABASE_TYPE || 'postgres';
export const DATABASE_USERNAME: string = process.env.DATABASE_USERNAME || 'admin';
export const DATABASE_PASSWORD: string = process.env.DATABASE_PASSWORD || 'myPW';
export const DATABASE_HOST: string = process.env.DATABASE_HOST || 'localhost';
export const DATABASE_PORT: number = Number(process.env.DATABASE_PORT) || 5432;
export const DATABASE_NAME: string = process.env.DATABASE_NAME || 'myDB';
export const DATABASE_SYNCHRONIZE: boolean = Boolean(process.env.DATABASE_SYNCHRONIZE) || true;
Я устанавливаю соединение в app.module, поэтому при запуске приложения.
import {
DATABASE_TYPE,
DATABASE_HOST,
DATABASE_PORT,
DATABASE_USERNAME,
DATABASE_PASSWORD,
DATABASE_NAME,
DATABASE_SYNCHRONIZE,
} from './config';
@Module({
imports: [
TypeOrmModule.forRoot({
type: DATABASE_TYPE,
host: DATABASE_HOST,
port: DATABASE_PORT,
username: DATABASE_USERNAME,
password: DATABASE_PASSWORD,
database: DATABASE_NAME,
entities: [],
synchronize: DATABASE_SYNCHRONIZE,
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
К сожалению, я получаю эту ошибку в type
поле
Тип 'строка' не может быть назначен типу '' mysql '|"Мариадб" |"postgres" |"таракан" |"sqlite" |"mssql" |"оракул" |"Кордова" |"nativescript" |"Реакция-родная" |"sqljs" |"mongodb" |"Аврора-дата-апи" |"expo" '. ts (2322) MysqlConnectionOptions.d.ts (12, 14): ожидаемый тип происходит из свойства' type ', которое объявлено здесь для типа' TypeOrmModuleOptions '
Я не знаюЯ не хочу передавать в жестко запрограммированной строке, как 'postgres'
, потому что я хочу, чтобы она сохраняла динамику. Я предпочитаю Postgres, но некоторые клиенты используют базы данных oracle, и я тоже должен поддерживать MSSQL.
Как я могу решить эту проблему конфигурации?