私は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 行を削除すると、更新は終了せず、将来にわたって機能します。
これらの原因を知っている人はいますか?