2016-12-11 7 views
0

Ich habe den folgenden Code für die Aktualisierung von zwei Benutzern, beide mit unterschiedlicher ID.Aktualisieren von zwei verschiedenen Dokumenten in einer Zeile

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){ 

    } 
); 

Ich konnte nichts in der Dokumentation finden beiseite zwei Dinge mit demselben Attribut von der Aktualisierung durch multi : true Einstellung. Allerdings sind die IDs in diesem Fall anders, und es wäre einfacher, Fehler zu behandeln, wenn ich sie beide auf einmal aktualisiert hätte.

Antwort

1

Warum nutzen Sie nicht parallele Operationen in bluebird oder mit co

können Sie so etwas wie:

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); 
Verwandte Themen