2016-11-16 13 views
1

の配列にプッシュ私はこのスキーマを持っている:マングースは、ネストされたサブ文書の

var UserSchema = new Schema({ 
    profile: { 
    firstName: {type: String, trim: true, required: true }, 
    lastName: {type: String, trim: true, required: true }, 
    city: {type: String} 
    age: {type: Number, min: 13, max: 120}, 
    image: {type: String,trim: true} 
    }, 
    friends:{ 
    accepted:[{ 
     id: {type: mongoose.Schema.Types.ObjectId, ref: 'User'}, 
     dateAccepted: {type: Date, default: Date.now} 
    }] 
    } 
} 

にはどうすれば.update方法でfriends.acceptedにデータをプッシュすることができますか?

私はfindOne方法でのみ成功:

User.findOne({ 
    _id: id 
    },function(err,user){ 
    user.friends.accepted.push(newUser._id); 
    user.save(function(err){if(err) return err;}) 
    }); 

答えて

0

これは動作するはずです:

User.findOneAndUpdate({ 
    _id: id 
}, { 
    $push: { 
    "friends.accepted": { 
     id: newUser._id 
    } 
    } 
}, 
{ 
    new: true 
}, 
function (err, user) { 
    console.log(err, user); 
}); 

ます。またUser.updateを使用することができますが、コールバックの2番目のパラメータが結果になります更新クエリ:{ ok: 1, nModified: 1, n: 1 }

findOneAndUpdateを使用すると、ユーザーオブジェクトを取得できます。オプションにnew: trueを渡すと、更新されたユーザーオブジェクトを取得できますが、それがなければ元のものになります。

+0

答えが見つかったので、更新しました _id:newUser._id 私のモデルではIDですが –

関連する問題