Mongoose更新文档与findByIdAndUpdate失败

尝试使用findByIdAndUpdate更新MongoDB文档:

var landmarkModel = mongoose.model('landmark', landmarkSchema, 'landmarks'); var lm = new landmarkModel(); //adding data to schema here, like: lm.name = req.body.name; lm.findByIdAndUpdate(req.body._id, lm, function (err, landmark) { if (err) console.log(err); else{ console.log(null, landmark); } }); 

返回错误: Object lm has no method 'findByIdAndUpdate'

我已经尝试用landmarkModel.findByIdAndUpdate交换lm.findByIdAndUpdate值,但这也不起作用。 我究竟做错了什么?

findByIdAndUpdate是一个静态方法:

 var landmarkModel = mongoose.model('landmark', landmarkSchema, 'landmarks'); var lm = req.body; delete lm._id; landmarkModel.findByIdAndUpdate(req.body._id, lm, console.log); 

请注意, landmarkModel接受普通的js对象。

如果你已经有一个mongoose对象,那么最好使用save来代替:

 var landmarkModel = mongoose.model('landmark', landmarkSchema, 'landmarks'); landmarkModel.findById(req.body._id, function (err, lm) { if (err) return next(err); //adding data to schema here, like: lm.name = req.body.name; lm.save(console.log); });