为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串变量传递给 TypeOrmModuleOptions 中的“type”

将字符串变量传递给 TypeOrmModuleOptions 中的“type”

牛魔王的故事 2021-11-04 17:45:51
我想使用 TypeORM 为我的 NestJs 应用程序设置数据库连接。我有一个配置文件,它从读取所有值.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现场遇到了这个错误类型 'string' 不能分配给类型 '"mysql" | "mariadb" | "postgres" | "蟑螂数据库" | "sqlite" | "mssql" | "神谕" | "科尔多瓦" | “原生脚本” | “反应原生” | "sqljs" | "mongodb" | “极光数据API” | "expo"'.ts(2322) MysqlConnectionOptions.d.ts(12, 14): 预期类型来自属性'type',它在'TypeOrmModuleOptions'类型上声明我不想传递硬编码字符串,'postgres'因为我希望它保持动态。我更喜欢 Postgres,但有些客户使用 oracle 数据库,我也必须支持 MSSQL。我该如何解决该配置问题?
查看完整描述

2 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

将您的数据库类型转换为字符串,如下所示:

   export const DATABASE_TYPE: any = String(process.env.DATABASE_TYPE) || 'postgres';


查看完整回答
反对 回复 2021-11-04
?
慕村225694

TA贡献1880条经验 获得超4个赞

这对我有用:


TypeOrmModule.forRoot({

  type: "sqlite" as any,

  host: "localhost",

  database: "./database/sqlite"

})

我花了整个周末试图找出这个问题,但被难住了。


有人有更好的解决方案或解释吗?


查看完整回答
反对 回复 2021-11-04
  • 2 回答
  • 0 关注
  • 303 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信