我是 node.js、mongoDB、mongo 和 express 的新手(全部在最新版本上)。当我工作时,我遇到了下一个情况:
我有一个更新的表,我会定期读取它。当我从中读取时,我会更新数据库中的一个标志,以防止重读。(我不想删除它,以防我需要检查东西)。
现在的问题是,我在和尚中使用更新后,它永远存在。我添加的每个帖子都被标记后,我必须重新启动服务器才能恢复正常。当我阅读时,问题再次出现。
我设法通过在代码中添加 req.pause() 来解决它 - 但我对此感到不舒服,因为我不想让一堆实时请求陷入服务器。
这是我的代码:
function(req,res){
this.getNotifications = function(req,res){
var username = req.params.username;
var justOpened = req.params.justOpened;
var callback = function(e,doc) {
if(doc != ""){
db.update(username + "Notifications",{read:0},{$set:{read:1}},function(){});
req.pause(); // if I delete this the update keeps going
res.json(doc);
res.status = 200;
res.end();
} else {
setTimeout(function(){db.find(username + "Notifications",read:0},{},callback);},5000);
}
};
if (justOpened == "true"){
db.find(username + "Notifications",{},{},callback);
} else {
db.find(username + "Notifications",{read : 0},{},callback);
}
}
我的 database.update 方法如下所示:
this.update = function(collectionName,queryObj,update,callback){
var collection = db.get(collectionName);
collection.update(queryObj,update,{multi:true},callback);
}
基本上,如果我删除 req.pause 行,更新将永远不会结束,并且可以在未来使用。
有谁知道这些是什么原因造成的?