我想在camps集合中为数组添加注释对象。 当我在console.log数组中找到我添加的数据。 但后来我检查了我的数据库,我发现comments数组是空的。
app.post('/campgrounds/:id/comments', function(req, res){
Camp.findById(req.params.id, function(err, campComm){
if(err){
console.log(err);
res.redirect('/campgrounds');
}else{
Comment.create(req.body.comment, function(err, comm){
if(err){
console.log(err);
}else{
campComm.comments.push(comm);
console.log(campComm.comments);
console.log(comm);
campComm.save();
console.log(campComm.comments);
res.redirect("/campgrounds/" + campComm._id);
}
});
}
});
});
这是Camp Schema
var campgroundSchema = new mongoose.Schema({
name: String,
img: String,
description: String,
comments: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Comment"
}
]
});
这是评论模式
var commentSchema = new mongoose.Schema({
text: String,
author: String
});
答案 0 :(得分:0)
mongoose
无法跟踪对象或数组中的更改,因此您应手动标记已修改的字段(see documentation for more details):
campComm.markModified('comments');
campComm.save();
另外值得注意的是save
是异步的,所以你必须传递回调并在那里执行后续步骤(如果你想确保你的更改已经保存成功,那么)
答案 1 :(得分:0)
这只是我错过的填充参数中的输入错误'
。