我正在尝试修改Mongoose中的文档,但这些更改似乎并没有保存。函数本身肯定被调用,每次错误都为null。记录ID被推送到阵列之前和之后所做的更改表明它已被添加,但它没有保存。
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
}
});
答案 0 :(得分:0)
您的查询错误。您必须从给定的id创建一个Mongo ObjectId。尝试
var ObjectId = require('mongoose').Types.ObjectId;
Moment.findOne({_id: new ObjectId(req.body.moment._id)}, function(err, moment) ....
在您的查询中,MongoDB找不到与您的查询匹配的文档。这不会引发错误,但您将收到一个空对象。