-1

mongoDB で埋め込み配列を使用しています。ドキュメントは以下のように見えます

{
    "_id" : ObjectId("516f89b393307a0f73533863"),
    "desc" : "LrOBVgWHHRyAxgYdKIwwgATcGTNBlz",
    "comments" :[
                 { 
                     "comment" : "superb",
                     "likeOrUnlike" : [
                          {"name":"kk",
                           "date":"2013/04/11",
                            "like":true
                           }
                      ]
                 }
      ]
   "date" : ISODate("2013-04-18T05:50:43.112Z"),
   "title" : "OaTHxDDMoINSaZCHCSNpJLNQyrqXGZ"

}

updateコメント内のlikeOrUnlike配列のdateとlikeフィールドが欲しいのですが、このシナリオでは自動更新ができないので、コードで手動で行うことを考えました(ドキュメント全体を取得して更新します)、

この場合、同時実行の問題が発生します

scenario :2 人が同時に同じコメントを気に入った場合。

したがって、解決策は特定の更新機能をロックすることです

 var updateComments = function(id,data){
     db.posts.findOne({"_id" :id},function(err,res){
        // stuff   
        //mongo update
     });
 };

コード全体を投稿することはできません。

私の質問は

node.jsで関数をロックするには?

node.js関数をロックすることは良い習慣ですか?

4

2 に答える 2