所以我有这个API方法:
router.delete('/circleAlertDelete/:id', function(req, res, next){
User.findOne({_id: req.params.id}).then(function(user){
var userTemp = user;
var alerts = user.circleAlerts;
var i = 0;
for(i=0; i<alerts.length; i++){
if(alerts._id == req.body.alertID){
alerts.splice(i,1);
}
}
userTemp.circleAlerts = alerts;
console.log(req.params.id);
User.findByIdAndUpdate({'_id': req.params.id}, userTemp, function(err, user){
console.log("error:",err);
res.send(user);
});
}).catch((err) => console.error(err));
});
我也试过这个无济于事:
{'_id': mongo.ObjectId(req.params.id)}
运行时,使用console.log(req.params.id);
打印的ID是数据库中用户的ID。
但也打印了error: null
。
无法解决这个问题,谢谢Ed。
答案 0 :(得分:1)
尝试仅使用您要设置为findByIdAndUpdate
的字段传递普通对象:
User.findByIdAndUpdate(req.params.id, {circleAlerts: alerts}, function(err, user) {
有效地转为以下更新操作:
$set: { circleAlerts: alerts }}
答案 1 :(得分:-1)
您没有指定如何更新文档,只是传递新对象。试试
User.findByIdAndUpdate({_id: req.params.id}, {$set: userTemp}, function(err, user){
console.log("error:",err);
res.send(user);
});