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プラグインがありますか? ....
あなたのユーザースキーマを表示できますか? –
通常の検索でクエリが機能するかどうかを確認しましたか?通常の検索でnullを返し、更新ではない場合は、クエリはそれが何をするかをしていない可能性があります。 –
私は友達をチェックしました。それはちょうど良い見つける。ラヴィは..これは私のスキーマのvar userSchema =新しいスキーマ({{ タイプ:文字列、 ユニーク:真、 が必要:真 }、 性別:文字列、 友達:[属性] ID}であります); – Ryan