【发布时间】:2022-06-22 03:09:02
【问题描述】:
所以我正在尝试将配置添加到我的 NestJs 项目中,到目前为止,我一直在使用 MongooseModule 来连接到数据库,但我在 MongooseModule.forRoot() 中提供了完整的 URL。
原来是这样的:
//app.module.ts
import { Module } from '@nestjs/common';
import { MongooseModuele } from '@nestjs/mongoose';
@Module({
imports: [MongooseModule.forRoot('mongodb://.....')]
})
然后我添加了 nestjs 配置,它看起来像这样:
//app.module.ts
import { Module } from '@nestjs/common';
import { MongooseModuele } from '@nestjs/mongoose';
import { ConfigModule, ConfigService } from '@nestjs/config';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
}),
MongooseModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (config: ConfigService) => ({
uri: config.get<string>('DB_HOST'),
}),
inject: [ConfigService],
}),
]
})
但随后出现此错误:
[Nest] 14098 - 06/01/2022, 7:16:42 AM 错误 [ExceptionHandler] 无效方案,预期连接字符串以“mongodb://”或“mongodb+srv://”开头
我也试过这种方式:
//app.module.ts
import { Module } from '@nestjs/common';
import { MongooseModuele } from '@nestjs/mongoose';
import { ConfigModule, ConfigService } from '@nestjs/config';
@Module({
imports: [
MongooseModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (config: ConfigService) => ({
uri: config.get<string>('DB_HOST'),
}),
inject: [ConfigService],
}),
]
})
嵌套打印此错误:
ERROR [ExceptionHandler] openUri() 的 uri 参数必须是字符串,得到“未定义”。确保mongoose.connect() 或mongoose.createConnection() 的第一个参数是字符串。
我的 .env 文件如下所示:
DB_HOST="mongodb://....."
app.module MongooseModule 似乎没有读取我的 .env 文件,有人知道如何解决吗?
谢谢
【问题讨论】:
标签: mongoose environment-variables nestjs config