如何锁定node.js函数?

时间:2013-04-19 05:51:26

标签: javascript node.js mongodb

我在mongoDB中使用嵌入式数组,Document看起来与下面相同

{
    "_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数组中的日期和类似字段,在这种情况下无法进行自动更新,所以我想通过代码手动完成(检索整个文档和更新),

在这种情况下会发生并发问题

scenario :如果两个人同时喜欢同一条评论。

所以解决方案是锁定特定的更新功能

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

我无法发布整个代码。

我的问题是

如何锁定node.js中的函数?

锁定node.js函数是不错的做法?

2 个答案:

答案 0 :(得分:1)

http://docs.mongodb.org/manual/reference/operator/positional/

使用mongodb位置运算符更新数组中的对象

答案 1 :(得分:0)

锁定应该是最后的手段。使用$ push(http://docs.mongodb.org/manual/reference/operator/push/)或其他集合。