Mongoose 未连接 MongoDB Atlas
Mongoose is not connecting 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* 我没有丢失我的凭据
已经在这里寻找解决方案,但没有与我的问题相似的问题。
我的白名单:
试试这个
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));
尝试将您的 IP 地址添加到 mongo atlas IP 白名单中。
如果您不需要安全连接,则接受所有连接。
新错误的新答案:
根据这个 ,它有完全相同的错误,即:
'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]:
将您当前的 IP 添加到 MongoDB 网站中 "clusters/security/whitelist" 之后的白名单。
对不起,我至少花了一个小时才解决这个问题。这就是我能做的。
解决前一个错误的旧答案(他修复了这部分,但仍然出现新错误):
如果您仔细阅读错误日志,它会显示:
UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block
这意味着您需要将 catch()
添加到您的 mongoose 连接:
mongoose.connect({some code}).then({some code}).catch(err => console.log(err))
我在家里尝试 运行 这段代码,而且效果很好!
所以是我办公室的问题,经过一些测试,问题是连接端口被锁定了。
看一看:
Error: connect ECONNREFUSED 3.209.60.172:27017
注意连接到端口27017
**Ip是随机的,所以每次申请都会变
我的sd打开这个端口后,一切正常!!
非常感谢你们的帮助!
对于那些尝试过各种 URI 的人来说,唯一让它在这里工作的是添加你的 IP vs 允许从任何地方访问.希望能为您节省一些时间。
这是我第一次使用 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* 我没有丢失我的凭据
已经在这里寻找解决方案,但没有与我的问题相似的问题。
我的白名单:
试试这个
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));
尝试将您的 IP 地址添加到 mongo atlas IP 白名单中。 如果您不需要安全连接,则接受所有连接。
新错误的新答案:
根据这个
'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]:
将您当前的 IP 添加到 MongoDB 网站中 "clusters/security/whitelist" 之后的白名单。
对不起,我至少花了一个小时才解决这个问题。这就是我能做的。
解决前一个错误的旧答案(他修复了这部分,但仍然出现新错误):
如果您仔细阅读错误日志,它会显示:
UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block
这意味着您需要将 catch()
添加到您的 mongoose 连接:
mongoose.connect({some code}).then({some code}).catch(err => console.log(err))
我在家里尝试 运行 这段代码,而且效果很好!
所以是我办公室的问题,经过一些测试,问题是连接端口被锁定了。
看一看:
Error: connect ECONNREFUSED 3.209.60.172:27017
注意连接到端口27017
**Ip是随机的,所以每次申请都会变
我的sd打开这个端口后,一切正常!!
非常感谢你们的帮助!
对于那些尝试过各种 URI 的人来说,唯一让它在这里工作的是添加你的 IP vs 允许从任何地方访问.希望能为您节省一些时间。