猫鼬没有连接MongoDB Atlas

时间:2019-06-07 16:36:18

标签: node.js mongodb mongoose mongodb-atlas

这是我第一次使用MongoDB Atlas与Mongo合作,而在尝试连接时,这是我得到的错误:

Error: connect ECONNREFUSED 3.209.60.172:27017
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1054:14) {
  name: 'MongoNetworkError',
  errorLabels: [ 'TransientTransactionError' ],
  [Symbol(mongoErrorContextSymbol)]: {}
}

这是我的代码:

const express = require('express');
const mongoose = require('mongoose');

const app = express();

mongoose.connect('mongodb+srv://johnnybox:<password>@cluster0-cgxqx.mongodb.net/test?retryWrites=true&w=majority', { 
  useNewUrlParser: true
}).then(() => console.log('MongoDB Connected...'))
  .catch(err => console.log(err));

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.use(require('./routes'));

app.listen(3331);

ps *我没有丢失我的凭据

已经在这里寻找解决方案,但是没有什么比我的问题更重要。

我的白名单:

enter image description here

5 个答案:

答案 0 :(得分:0)

尝试

mongoose
  .connect(
    'mongodb+srv://{my_user}:{mypass}@johnnybox-cgxqx.mongodb.net/johnnybox?retryWrites=true&w=majority',
    { useNewUrlParser: true }
  )
  .then(() => console.log('MongoDB Connected...'))
  .catch(err => console.log(err));

答案 1 :(得分:0)

尝试将您的IP地址添加到mongo地图集IP白名单中。 否则,如果不需要安全连接,则接受每个连接。

答案 2 :(得分:0)

针对新错误的新答案:

根据与此answer相同的确切错误,即:

'MongoNetworkError',
  errorLabels: [ 'TransientTransactionError' ],
  [Symbol(mongoErrorContextSymbol)]:

在MongoDB网站中的“ clusters / security / whitelist”之后,将您当前的IP添加到whiteList。

对不起,我花了至少一个小时来解决这个问题。这就是我所能做的。


针对先前错误的旧答案(他修复了此部分,但仍然出现了新错误):

如果您仔细阅读错误日志,则会显示:

UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block

这意味着您需要将catch()添加到您的猫鼬连接中:

mongoose.connect({some code}).then({some code}).catch(err => console.log(err))

答案 3 :(得分:0)

我试图在家中运行此代码,并且效果很好!

所以这是我办公室里的东西,经过一番测试之后,问题出在连接端口被锁住了。

看看:

Error: connect ECONNREFUSED 3.209.60.172:27017

请注意,它连接到端口27017

** Ip是随机的,因此每次请求后都会更改。

我的SD打开此端口后,一切正常!

enter image description here

非常感谢您的帮助!

答案 4 :(得分:0)

对于那些尝试过各种 URI 的人来说,唯一能在这里起作用的是添加您的 IP允许从任何地方访问。希望能为您节省一些时间。