因此,我尝试向我的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错误[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],
}),
]
})
嵌套打印此错误:
错误[ExceptionHandler] openUri()
的uri
参数必须是字符串,但得到的是“undefined”。请确保mongoose.connect()
或mongoose.createConnection()
的第一个参数是字符串。
我的.env文件如下所示:
DB_HOST="mongodb://....."
看起来像是在app.module上MongooseModule没有阅读我的.env文件,有人知道如何解决这个问题吗?
谢谢
3条答案
按热度按时间k5ifujac1#
请尝试下面的代码,它为我工作.
qlfbtfca2#
这里是完整的工作代码。
connectionName
是在你的应用程序中有多个数据库的情况下使用。zzoitvuj3#
您不需要任何配置文件。您只需在app.module.ts文件中写入process.env.DATABASE_URL,然后从cmd中设置该env参数,如下所示:
你可以运行你的代码