Node.js MongooseError[MongooseServerSelectionError]:连接<;监控>;至52.6.250.237:27017关闭

Node.js MongooseError[MongooseServerSelectionError]:连接<;监控>;至52.6.250.237:27017关闭,node.js,mongodb,Node.js,Mongodb,我试图通过post方法将数据保存在mongodb中,并将mongodb atala与node.js一起使用,但它一直给我一个错误,我提供了正确的连接字符串和密码。请帮助解决这个问题。谢谢 here is the code: const mongoose = require('mongoose'); const monngodb_url="mongodb+srv://maarij:asdf360@cluster0-j7wis.mongodb.net/authDB?retryWrites=true

我试图通过post方法将数据保存在mongodb中,并将mongodb atala与node.js一起使用,但它一直给我一个错误,我提供了正确的连接字符串和密码。请帮助解决这个问题。谢谢

here is the code:
const mongoose = require('mongoose');

const monngodb_url="mongodb+srv://maarij:asdf360@cluster0-j7wis.mongodb.net/authDB?retryWrites=true&w=majority";

mongoose.connect(monngodb_url, {useNewUrlParser: true,useUnifiedTopology: true}).then(()=>{
    console.log("mongodb is connected");
}).catch((error)=>{
    console.log("mondb not connected");
    console.log(error);
});

here is Error:

server is running on port 3000
{ name: 'myName', email: 'e@mail.com', password: 'abcdefg' }
mondb not connected
MongooseError [MongooseServerSelectionError]: connection <monitor> to 52.6.250.237:27017 closed
    at new MongooseServerSelectionError (D:\react-native\reactNativeBackend\node_modules\mongoose\lib\error\serverSelection.js:22:11)
    at NativeConnection.Connection.openUri (D:\react-native\reactNativeBackend\node_modules\mongoose\lib\connection.js:808:32)
    at Mongoose.connect (D:\react-native\reactNativeBackend\node_modules\mongoose\lib\index.js:333:15)
    at Object.<anonymous> (D:\react-native\reactNativeBackend\db\db.js:5:10)
    at Module._compile (internal/modules/cjs/loader.js:955:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
    at Function.Module._load (internal/modules/cjs/loader.js:723:14)
    at Module.require (internal/modules/cjs/loader.js:848:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (D:\react-native\reactNativeBackend\index.js:4:19)
    at Module._compile (internal/modules/cjs/loader.js:955:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
    at Function.Module._load (internal/modules/cjs/loader.js:723:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10) {
  message: 'connection <monitor> to 52.6.250.237:27017 closed',
  name: 'MongooseServerSelectionError',
  reason: TopologyDescription {
    type: 'ReplicaSetNoPrimary',
    setName: null,
    maxSetVersion: null,
    maxElectionId: null,
    servers: Map {
      'cluster0-shard-00-01-j7wis.mongodb.net:27017' => [ServerDescription],
      'cluster0-shard-00-02-j7wis.mongodb.net:27017' => [ServerDescription],
      'cluster0-shard-00-00-j7wis.mongodb.net:27017' => [ServerDescription]
    },
    stale: false,
    compatible: true,
    compatibilityError: null,
    logicalSessionTimeoutMinutes: null,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    commonWireVersion: null
  },
  [Symbol(mongoErrorContextSymbol)]: {}
}
以下是代码:
const mongoose=require('mongoose');
const monngodb_url=“mongodb+srv://maarij:asdf360@cluster0-j7wis.mongodb.net/authDB?retryWrites=true&w=maist”;
connect(monngodb_url,{useNewUrlParser:true,useUnifiedTopology:true}){
log(“mongodb已连接”);
}).catch((错误)=>{
console.log(“mondb未连接”);
console.log(错误);
});
以下是错误:
服务器正在端口3000上运行
{name:'myName',电子邮件:'e@mail.com,密码:'abcdefg'}
mondb未连接
MongooseError[MongooseServerSelectionError]:与52.6.250.237:27017的连接已关闭
在新的MongooseServerSelectionError(D:\react native\reactNativeBackend\node\u modules\mongoose\lib\error\serverSelection.js:22:11)
位于NativeConnection.Connection.openUri(D:\react native\reactNativeBackend\node\u modules\mongoose\lib\Connection.js:808:32)
在Mongoose.connect(D:\react native\reactNativeBackend\node\u modules\Mongoose\lib\index.js:333:15)
反对。(D:\react native\reactNativeBackend\db\db.js:5:10)
at模块编译(内部/modules/cjs/loader.js:955:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:991:10)
在Module.load(内部/modules/cjs/loader.js:811:32)
at Function.Module._load(内部/modules/cjs/loader.js:723:14)
at Module.require(内部/modules/cjs/loader.js:848:19)
根据需要(internal/modules/cjs/helpers.js:74:18)
反对。(D:\react native\reactNativeBackend\index.js:4:19)
at模块编译(内部/modules/cjs/loader.js:955:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:991:10)
在Module.load(内部/modules/cjs/loader.js:811:32)
at Function.Module._load(内部/modules/cjs/loader.js:723:14)
位于Function.Module.runMain(internal/modules/cjs/loader.js:1043:10){
消息:“与52.6.250.237:27017的连接已关闭”,
名称:“MongooseServerSelectionError”,
原因:拓扑学描述{
类型:“ReplicateSetNoPrimary”,
setName:null,
maxSetVersion:null,
maxElectionId:null,
服务器:地图{
'cluster0-shard-00-01-j7wis.mongodb.net:27017'=>[ServerDescription],
'cluster0-shard-00-02-j7wis.mongodb.net:27017'=>[ServerDescription],
'cluster0-shard-00-00-j7wis.mongodb.net:27017'=>[ServerDescription]
},
陈腐:错,
是的,
兼容性错误:null,
logicalSessionTimeoutMinutes:空,
心跳频率:10000,
localThresholdMS:15,
commonWireVersion:空
},
[符号(mongoErrorContextSymbol)]:{}
}

我也有同样的问题,但我成功地解决了它。 在您的MongoDB帐户上,检查您选择用于连接应用程序的IP

如果您开始使用初始IP并尝试使用另一个IP地址,那么它将不起作用

在mongoDB中:


NetworkAccess/(验证您注册的IP与实际使用的IP相同)。您可以选择:添加IP地址

您的index.js
应用程序中是否有此行。使用(cors())

尝试删除此行并删除所有涉及cors的内容


如果这不起作用,请尝试Mehdi Berra的解决方案

您可以通过进入网络访问面板来解决此问题

然后单击添加IP地址

&然后填写0.0.0.0/0,然后单击确认

不要在生产中这样做,但在开发中,它会起作用


我也有类似的问题。 “转到网络访问”->“IP白名单”->您只能从这些IP地址连接到群集,因此如果您的IP不在该列表中


然后单击“添加IP地址”按钮->在此处单击“添加您当前的IP地址”按钮。

这可能是因为您的机器的IP发生了变化,这不应该发生在生产中,但要修复它,您需要转到网络访问面板->添加IP地址,然后单击“添加此IP地址”,然后我就可以开始工作了,直到它再次改变。

投票最多的解决方案在大多数情况下都不起作用。您应该首先遵循“Aka”解决方案的步骤,然后删除您的
node\u modules
文件夹。在那之后,只需运行
npmi
重新安装所有依赖项,考虑到您已经在
包中注册了依赖项,您应该可以开始了。json

这里的主要问题是
Mongodb Atlas
。有效的方法 me将删除Mongodb网络部分中的现有IP地址
Atlas,然后再次添加。

您可能希望删除此问题,并在删除登录凭据和url的情况下再次提问。各位,这显然是一个假密码。看看你的键盘,从A开始。错误消息echo是整行,而上面的
monngodb_url
行使用不同的变体,以相同的4个不太随机的字符开头。最后但并非最不重要的一点是,主机名
cluster0-j7wis.mongodb.net
不存在。@double beep:您错过了实际密码的位置,
monngodb\u url
值。谢谢。这节省了我2.5小时无用的努力。你必须实际白名单你的IP。不确定这是否是最好的解决方案,但它的快速和有效的为我!感谢Avi,这是用于开发目的的快速解决方案。这只是为了提醒您,请在开发过程中删除此解决方案,或者为prod使用另一台服务器,不要在生产服务器上添加此解决方案。只添加您服务器的IP地址对于我来说,我曾两次删除/添加
允许所有
,但直到我在删除
我的当前IP
允许所有
,它才起作用