节点js和尚更新滞留

我是新来的node.js,mongoDB,僧侣和快递(所有最新版本)。 当我在工作时,我遇到了下一个情况:

我有一个更新的表,我定期读它。 当我读它时,我更新数据库中的一个标志,以防止重读。 (我不想删除它,以防我需要检查的事情)。

现在的问题是,我使用和尚更新后,它永远存在。 每一个post,我添加后被标记,我必须重新启动服务器,它恢复正常。 而当我阅读时,问题再次出现。

我设法通过在代码中添加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行,那么更新永远不会结束,并且会在未来工作。

有谁知道是什么原因造成的?

我已经解决了这个问题。 如果有人遇到同样的问题,我会在这里添加。

添加一个返回的代码停止了该函数。