mongoose保存function不保存修改

我正在尝试修改Mongoose中的文档,但是这些更改似乎并没有被保存。 函数本身肯定被调用,每次错误都是空的。 将ID前后所做的更改logging到数组中显示已添加,但不保存。

function(req, res) { var id = req.user._id; Moment.findOne({ _id: req.body.moment._id }, function (err, moment) { moment.comments[req.body.index].likes.push(id); moment.save(function(err) { console.log('saved'); if (err) console.log(err); res.json(moment); }); } }) }; 

架构

 var MomentSchema = new Schema({ name: { type: String, trim: true, default: '', required: true }, username: { type: String, required: true }, startTime: { type: Date, trim: true, required: true }, endTime: { type: Date, trim: true, required: true }, comments: { type: Array } }); 

你的查询是错误的。 你必须从给定的ID创build一个Mongo ObjectId。 尝试

 var ObjectId = require('mongoose').Types.ObjectId; Moment.findOne({_id: new ObjectId(req.body.moment._id)}, function(err, moment) .... 

在你的查询中,MongoDB没有find与你的查询匹配的文档。 这不会抛出一个错误,但你会收到一个空的对象。