在一行中更新两个不同的文档

时间:2016-12-11 15:25:23

标签: node.js mongodb mongoose

我有以下代码用于更新两个具有不同身份的用户。

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是不同的,如果我将它们同时更新,则更容易出错。

1 个答案:

答案 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);