2016-12-26 1 views
0

私のコードを読んだ場合、リクエストによって与えられたIDが文書のFriendsの要素と一致すると、ユーザーは更新されません($not演算子のため)。したがって、ユーザーが見つかって更新されない場合、戻された結果(myDoc、otherDoc)はnullです。私はまだ更新されているかどうかにかかわらず、両方のドキュメントを取得したいと思います。私はmongooseドキュメントをチェックしましたが、その解決策を見つけることができないようです。findOneAndUpdateは、ユーザーが更新されていないとnullを戻します(条件のため)

promise.all([ 
User.findOneAndUpdate({id: req.body.myId, Friends: { $not: { $elemMatch: { id: req.body.id }}}}, {$addToSet: { Friends: { id: req.body.id, gender: req.body.gender, emoji: res.locals.myEmoji }}}), 
    User.findOneAndUpdate({id: req.body.id, Friends: {$not: { $elemMatch: {id: req.body.myId }}}}, {$addToSet: { Friends: { id: req.body.myId, gender: req.body.myGender, emoji: res.locals.friendEmoji }}})]) 
.spread(function (myDoc, otherDoc){ 


    ///gives back null if user is not updated 

}).catch(function (err){ 

    return res.status(400).send(err) 

}); 

編集:これにはいくつかの種類のmongooseプラグインがありますか? ....

+0

あなたのユーザースキーマを表示できますか? –

+0

通常の検索でクエリが機能するかどうかを確認しましたか?通常の検索でnullを返し、更新ではない場合は、クエリはそれが何をするかをしていない可能性があります。 –

+0

私は友達をチェックしました。それはちょうど良い見つける。ラヴィは..これは私のスキーマのvar userSchema =新しいスキーマ({{ タイプ:文字列、 ユニーク:真、 が必要:真 }、 性別:文字列、 友達:[属性] ID}であります); – Ryan

答えて

0

findOneAndUpdate add newの後に更新されたドキュメントを取得して、それをtrueに設定する場合は、次のようにします。

User.findOneAndUpdate({ 
    id: req.body.myId, Friends: { $not: { $elemMatch: { id: req.body.id }}} 
},{ 
    $addToSet:{Friends:{ id: req.body.id, gender: req.body.gender,emoji: res.locals.myEmoji}} 
}, { 
    new: true 
}), 
関連する問題