我正在开发 NestJS 微服务架构,并在连接到 MongoDB Atlas 时遇到问题。相同的 MongoDB URI 配置适用于整体 NestJS 项目,但在我的微服务设置中失败,即使所有 IP 都已列入 MongoDB Atlas 白名单。
我尝试了一些解决方案:
验证
.env
变量(如 MongoDB URI)是否在每个服务中正确加载。
使用本地 MongoDB 实例和 MongoDB Atlas 进行测试。
确认 MongoDB Atlas 连接在单项目结构(整体)中工作,但在微服务设置中失败。
以下是我为每项服务设置
MongooseModule
的方法:问题是否与微服务设置中环境变量管理或模块加载的差异有关?任何建议或故障排除步骤将不胜感激!
问题详情:
我在每个模块中使用 MongooseModule.forRoot 配置了 MongoDB。这是我的一项服务的设置:
import { Module } from '@nestjs/common';
import { CrowdfundingService } from './services/crowdfunding.service';
import { CrowdfundingController } from './controllers/crowdfunding.controller';
import { MongooseModule } from '@nestjs/mongoose';
import { Campaign, CampaignSchema } from './schemas/campaign.schema';
import { Contribution, ContributionSchema } from './schemas/contribution.schema';
import { Update, UpdateSchema } from './schemas/update.schema';
import { CampaignService } from './services/campaign.service';
import { ContributionService } from './services/contribution.service';
import { UpdateService } from './services/update.service';
@Module({
imports: [
MongooseModule.forRoot(
`mongodb+srv://${process.env.MONGODB_USERNAME}:${process.env.MONGODB_PASSWORD}@cluster.f4rts7w.mongodb.net/${process.env.MONGODB_DATABASE}?retryWrites=true&w=majority`
),
MongooseModule.forFeature([
{ name: Campaign.name, schema: CampaignSchema },
{ name: Contribution.name, schema: ContributionSchema },
{ name: Update.name, schema: UpdateSchema },
]),
],
controllers: [CrowdfundingController],
providers: [
CrowdfundingService,
CampaignService,
ContributionService,
UpdateService,
],
})
export class CrowdfundingModule {}