2016-12-11 5 views
0

私は2人のユーザーを更新するために次のコードを使用しています。2行の異なるドキュメントを1行で更新する

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を設定することで、同じ属性を持つ2つの事柄を更新からドキュメントに何かを見つけることができませんでした。しかし、この場合idは異なります。両方を一度に更新すると、ハンドルのエラーが発生しやすくなります。

bluebirdに並列演算を利用するか、あなたが何か行うことができます co

使用していないのはなぜ

答えて

1

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); 
関連する問題