gpt4 book ai didi

node.js - 处理从 nodejs 与 mongo db 的连接丢失

转载 作者:IT老高 更新时间:2023-10-28 13:23:00 26 4
gpt4 key购买 nike

当 nodejs 和 mongodb 服务器之间的连接丢失时,我正在尝试“连接丢失”或类似的东西。我使用 native 驱动程序并具有以下代码

var mongo = require('mongodb');
var server = new mongo.Server('host', 'port', {
auto_reconnect: true,
socketOptions: {
keepAlive: 10,
connectTimeoutMS: 1000,
socketTimeoutMS: 0
}
});
var db = new mongo.Db(
'dbname',
server,
{
w: 1,
wtimeout: 1000,
numberOfRetries: 100,
auto_reconnect: true
}
);

db.on('close', function () {
console.log('Error...close');
});
db.on('error', function (err) {
console.log('Error...error', err);
});
db.on('disconnect', function (err) {
console.log('Error...disconnect', err);
});
db.on('disconnected', function (err) {
console.log('Error...disconnected', err);
});
db.on('parseError', function (err) {
console.log('Error...parse', err);
});
db.on('timeout', function (err) {
console.log('Error...timeout', err);
});

db.collection('collectionName',function(err, collection){
if(err){
console.log('Error...collection', err);
return;
}

// set breakpoint here and break connection to mongo db server
collection.insert({}, function (err, data) {
if (err) {
console.log('Error...insert', err);
}
console.log('Fine!');
});
});

20 分钟左右没有出现超时或错误,插入被卡住。之后我得到“错误...插入”连接丢失错误。

例如,我尝试设置 socketTimeoutMS = 10000 和 keepAlive = 1,但是 socketTimeoutMS 在 10000 之后不断上升“超时”事件,并且不考虑 keepAlive 设置甚至对 mongodb 的查询。

只有当我们连接到 mongodb 服务器并且有一个长时间的查询时,wtimeout 才有效。如果连接丢失,它将无法正常工作。

那么当我失去连接时如何获取事件或错误?或者减少 20 分钟的查询卡住?

最佳答案

如果 mongodb 服务器进程正在运行,请运行此示例。之后,如果您停止服务器进程,您将看到 Error...close 正在显示。“on”功能的所有可能事件都可以是found here

var MongoClient = require('mongodb').MongoClient;

// Connect to the db
MongoClient.connect('mongodb://localhost:27017/exampleDb', function(err, db) {
if(err) {
return console.dir(err);
}
console.log('We are connected');
// db.close();
db.on('close', function () {
console.log('Error...close');
});
});

关于node.js - 处理从 nodejs 与 mongo db 的连接丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21269345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com