我有以下代码用于更新两个具有不同身份的用户。
User.update(
{ id: req.body.myId },
{
$addToSet: { FriendIds: req.body.friendId }
},
function(err, user){
}
);
User.update(
{ id: req.body.friendId },
{
$addToSet: { FriendIds: req.body.myId }
},
function(err, user){
}
);
除了通过设置multi : true
更新具有相同属性的两件事之外,我在文档中找不到任何内容。但是,在这种情况下,ID是不同的,如果我将它们同时更新,则更容易出错。
答案 0 :(得分:1)
为什么不利用bluebird
中的并行操作或使用co
您可以执行以下操作:
co(function* () {
var res = yield {
1: User.update({ id: req.body.myId }, { $addToSet: { FriendIds: req.body.friendId }}).exec(),
2: User.update({ id: req.body.friendId },{$addToSet: { FriendIds: req.body.myId }}).exec(),
};
console.log(res); // { 1: Upate_response_for_1 , 2: Upate_response_for_2 }
}).catch(onerror);