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関数をロックすることは良い習慣ですか?