node js monk update lingers

时间:2015-10-19 05:37:02

标签: node.js mongodb express monk

我是node.js,mongoDB,monk和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行,更新永远不会结束,并且将来会继续使用。

有谁知道是什么原因引起的?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我在这里添加它,万一有人遇到同样的问题。

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