处理MongoDB中的(长期)连接丢失

时间:2014-10-05 05:15:21

标签: node.js mongodb timeout node-mongodb-native

我正在编写一个使用商店的Web应用程序。如果客户端在30秒内未收到响应,则会认为请求已停止并发出超时错误。

我试图让 MongoDB 做同样的事情。例如,如果连接断开1分钟,则驱动程序将尝试重新连接,并将客户端的请求挂起,直到重新连接成功为止。因此,socketTimeoutMS(我设法开始工作)这样的事情在这里没有效果。

MongoDB 放到"放弃"的最佳方式是什么?在N秒后请求?

我想要的最后一件事是给客户端一个超时错误 - 服务器在5分钟后实际完成请求!

1 个答案:

答案 0 :(得分:1)

2.6:

中引入了maxTimeMS选项
var MongoClient = require('mongodb').MongoClient;

MongoClient.connect("mongodb://localhost:27017/test", function(err, db) {
    // Get an aggregation cursor
    var cursor = db.collection('data')
        .find("$where": "sleep(1000) || true")
        .maxTimeMS(50);

    // Get alll the items
    cursor.toArray(function(err, items) {
        console.dir(err);
        console.dir(items);
        db.close();
    });
});