MongoDb显示不同的结果

时间:2018-04-07 17:27:24

标签: node.js mongodb express

我想在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
});

2 个答案:

答案 0 :(得分:0)

mongoose无法跟踪对象或数组中的更改,因此您应手动标记已修改的字段(see documentation for more details):

campComm.markModified('comments');
campComm.save();

另外值得注意的是save是异步的,所以你必须传递回调并在那里执行后续步骤(如果你想确保你的更改已经保存成功,那么)

答案 1 :(得分:0)

这只是我错过的填充参数中的输入错误'