nestjs 微服务 mongodb atlas 连接问题

问题描述 投票:0回答:1

我正在开发 NestJS 微服务架构,并在连接到 MongoDB Atlas 时遇到问题。相同的 MongoDB URI 配置适用于整体 NestJS 项目,但在我的微服务设置中失败,即使所有 IP 都已列入 MongoDB Atlas 白名单。

我尝试了一些解决方案:

  1. 验证

    .env
    变量(如 MongoDB URI)是否在每个服务中正确加载。

  2. 使用本地 MongoDB 实例和 MongoDB Atlas 进行测试。

  3. 确认 MongoDB Atlas 连接在单项目结构(整体)中工作,但在微服务设置中失败。

以下是我为每项服务设置

MongooseModule
的方法:
MongooseModule.forRoot(`mongodb+srv://${process.env.MONGODB_USERNAME}:${process.env.MONGODB_PASSWORD}@cluster.f4rts7w.mongodb.net/${process.env.MONGODB_CROWDFUNDING_DATABASE}?retryWrites=true&w=多数`)

问题是否与微服务设置中环境变量管理或模块加载的差异有关?任何建议或故障排除步骤将不胜感激!

node.js mongodb nestjs microservices atlas
1个回答
0
投票

问题详情:

我在每个模块中使用 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 {}

© www.soinside.com 2019 - 2024. All rights reserved.