我有这样的模式:
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}
}]
}
}
如何在好友中推送数据。
我只成功使用findOne方法:
User.findOne({
_id: id
},function(err,user){
user.friends.accepted.push(newUser._id);
user.save(function(err){if(err) return err;})
});
应该可以:
User.findOneAndUpdate({
_id: id
}, {
$push: {
"friends.accepted": {
id: newUser._id
}
}
},
{
new: true
},
function (err, user) {
console.log(err, user);
});
也可以使用User。更新,但回调的第二个参数将是更新查询的结果:{ ok: 1, nModified: 1, n: 1 }
使用findOneAndUpdate允许你获得用户对象。在选项中传递new: true
允许您获得更新的用户对象,而没有它,您将获得原始的。