我正在编写一个使用商店的Web应用程序。如果客户端在30秒内未收到响应,则会认为请求已停止并发出超时错误。
我试图让 MongoDB 做同样的事情。例如,如果连接断开1分钟,则驱动程序将尝试重新连接,并将客户端的请求挂起,直到重新连接成功为止。因此,socketTimeoutMS
(我设法开始工作)这样的事情在这里没有效果。
将 MongoDB 放到"放弃"的最佳方式是什么?在N秒后请求?
我想要的最后一件事是给客户端一个超时错误 - 服务器在5分钟后实际完成请求!
答案 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();
});
});