NestJS Mongoose 连接错误:“MongooseServerSelectionError:连接 ECONNREFUSED ::1:27017”

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

我正在开发一个 NestJS 应用程序,该应用程序使用 Mongoose 模块连接到 MongoDB 数据库。一切都工作正常,直到我遇到以下错误:

[Nest] 3372  - 08/24/2024, 9:32:12 PM   ERROR [MongooseModule] Unable to connect to the database. Retrying (1)...
MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
    at _handleConnectionErrors (C:\Users\Tarek\Desktop\auth\my-app\node_modules\mongoose\lib\connection.js:897:11)
    at NativeConnection.asPromise (C:\Users\Tarek\Desktop\auth\my-app\node_modules\mongoose\lib\connection.js:1360:11)
    at C:\Users\Tarek\Desktop\auth\my-app\node_modules\@nestjs\mongoose\dist\mongoose-core.module.js:40:125

这是我的AppModule的相关部分:

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { AuthModule } from './auth/auth.module';
import { MongooseModule } from '@nestjs/mongoose';
import { UserSchema } from './auth/schemas/user.schema';

@Module({
  imports: [
    MongooseModule.forRoot('mongodb://localhost:27017/MyApp'),
    AuthModule,
    // Other modules
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

我在本地运行 MongoDB,mongod 和 mongosh 都工作正常,没有任何问题。 我已确认 MongoDB 正在监听默认端口 27017。 应用程序连接失败,不断重试,但连接被拒绝。

我尝试过的

验证 MongoDB 正在 localhost:27017 上运行。 检查防火墙和网络设置以确保连接未被阻止。 重新启动 MongoDB 服务。

问题

可能导致连接拒绝的原因是什么?如何解决?我的 NestJS 或 Mongoose 配置中是否缺少某些内容?

node.js mongodb mongoose nestjs nestjs-mongoose
1个回答
0
投票

问题是,mongo 可以在集群上运行,因此 mongo 驱动程序会尝试查找其他 mongo 实例。

Yoiu 可以在连接字符串中使用

?directConnection=true
来避免这种情况,就像这样

@Module({
  imports: [
    MongooseModule.forRoot('mongodb://localhost:27017/MyApp?directConnection=true'),
    AuthModule,
    // Other modules
  ],
  controllers: [AppController],
  providers: [AppService],
})

直接连接 指定客户端是否直接连接到连接 URI 中的主机[:端口]:

  • true:客户端仅向指定主机发送操作。它不会尝试发现副本集的任何其他成员。

  • false:客户端尝试发现副本集中的所有服务器,并向主成员发送操作。这是默认值。

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