node.js - MongoDB Atlas - 如何修复共享网络托管上的“TransientTransactionError”
问题描述
TransientTransactionError
尝试从共享网络主机连接到 Mongo Atlas 时
我实际上曾经有过这个工作,但我不得不在我的网络主机上从头开始擦除并重新启动我的项目。现在,在尝试连接到 Atlas 时,我似乎突然出现上述错误。我已经尝试在 Atlas 中将 IP 地址列入白名单,包括我的服务器 IP 和 0.0.0.0/0(“允许所有”通配符)。
我也尝试使用“完整驱动程序”片段而不是猫鼬,但仍然收到相同的错误。最后,我想指出完全相同的代码在我的本地机器上运行良好。
这是我的功能:
const mongoose = require("mongoose");
const config = require("./config");
module.exports = cb => {
if (mongoose.connection.readyState < 1) {
mongoose.connect(config.db).then(
() => {
console.log("Database linking successful!");
return cb ? cb : null;
},
err => {
console.log("Failed to connect to database.", err);
}
);
}
};
错误消息如下所示:
{ MongoNetworkError: failed to connect to server [<mongodb-shard-goes-here>.mongodb.net:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 54.145.177.180:27017]
at Pool.<anonymous> (/home/titanesp/public_html/server/node_modules/mongodb-core/lib/topologies/server.js:431:11)
at Pool.emit (events.js:182:13)
at connect (/home/titanesp/public_html/server/node_modules/mongodb-core/lib/connection/pool.js:557:14)
at makeConnection (/home/titanesp/public_html/server/node_modules/mongodb-core/lib/connection/connect.js:39:11)
at callback (/home/titanesp/public_html/server/node_modules/mongodb-core/lib/connection/connect.js:261:5)
at TLSSocket.err (/home/titanesp/public_html/server/node_modules/mongodb-core/lib/connection/connect.js:286:7)
at Object.onceWrapper (events.js:273:13)
at TLSSocket.emit (events.js:182:13)
at emitErrorNT (internal/streams/destroy.js:82:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
name: 'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]: {} }
解决方案
推荐阅读
- java - 用于对象检测的带有 model.tflite 的 Android 应用
- python - 丢弃 TCP 数据包的 Python 函数 - OpenFlow
- c++ - 从 C++ 类转换函数指针以在 C 中使用它
- vue.js - Vue 可拖动、嵌套和组
- encryption - Dukpt AES-192 和 AES-256 派生密钥计算
- java - 使用 Spring / Hibernate / Postgres 处理事务超时导致的异常
- windows - 不会分配伪终端,因为stdin不是windows powershell中的终端,当没有执行额外的命令时
- python - 如何通过简单的深度学习(线性回归)制作 x*y
- python - Tkinter如何在同一窗口中输出图表
- angular - Asp Core 3.1,Cors 不适用于某些 api 方法