node.js - Mongoose 无法连接到 Mlab
问题描述
我正在尝试从节点应用程序连接到 mlab 数据库,当我尝试连接时它只是挂起。即使我的 mlab 数据库使用不同的端口,它也会在错误中显示默认端口 27017。
我在其他项目中使用过 mlab 和 mongoose,但从未收到此错误,所以我很困惑。
错误:
{ MongoTimeoutError: Server selection timed out after 30000 ms
at Timeout.setTimeout [as _onTimeout] (/Users/<user>/playground/mongo-test/node_modules/mongodb/lib/core/sdam/server_selection.js:308:9)
at ontimeout (timers.js:475:11)
at tryOnTimeout (timers.js:310:5)
at Timer.listOnTimeout (timers.js:270:5)
name: 'MongoTimeoutError',
reason:
{ Error: getaddrinfo ENOTFOUND <my username> <my username>:27017
at errnoException (dns.js:50:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)
name: 'MongoNetworkError',
[Symbol(mongoErrorContextSymbol)]: {} },
[Symbol(mongoErrorContextSymbol)]: {} }
我的代码:
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const PORT = process.env.PORT || 8000;
mongoose.connect('mongodb://<my username>:<my password>@<theservername>.mlab.com:59577/express-chat-dev', { useNewUrlParser: true, useUnifiedTopology: true }, (err) => {
console.log('[hello]');
if (err) {
console.error(err);
} else {
console.log('[mongo connected]');
}
});
app.listen(PORT, () => {
console.log(`Express running on port ${PORT}`)
})
解决方案
所以我不确定这是否是 API 更改,但将我的凭据移动到选项对象中解决了我的问题。
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const PORT = process.env.PORT || 8000;
const options = {
user: <username>,
pass: <password>,
useNewUrlParser: true,
useUnifiedTopology: true
}
mongoose.connect('mongodb://<theservername>.mlab.com:59577/express-chat-dev', options, (err) => {
console.log('[hello]');
if (err) {
console.error(err);
} else {
console.log('[mongo connected]');
}
});
app.listen(PORT, () => {
console.log(`Express running on port ${PORT}`)
})
推荐阅读
- android - 在 libGDX 中缩放相机不保存尺寸
- android - Kotlin 中的图像共享意图问题
- azure-storage - 在 Azure Functions 中管理大量应用程序设置
- c++ - Eigen:如果我只能计算 Aty 和 Ax,是否可以创建类似 LeastSquareDiagonalPreconditioner 的调节器?
- windows - 可以在 Windows 上检测到文件副本吗?
- qt - Qt:如何找到鼠标点击相对于图像的位置
- python-3.x - Mongo 错误:聚合的“未知顶级运算符:$completed_on”
- c# - ListView 单元格翻译操作会影响其他单元格
- visual-studio-code - 在 Visual Studio Code 中创建默认代码
- javascript - React - 与新更新值不同的功能 setState(先前状态)?