Mongodb 文档未保存在数据库中

Mongodb 文档未保存在数据库中,mongodb,mongoose,Mongodb,Mongoose,在文章模型中,我想保存类别列表: var CategorySchema = new Schema({ name: String, active: Boolean }); var ArticleSchema = new Schema({ title: String, description: String, categories: [{ type : Schema.Types.ObjectId, ref: 'Category' }] }) 从端点开始,我想用类别更新文章。更

在文章模型中,我想保存类别列表:

var CategorySchema = new Schema({
  name: String,
  active: Boolean
});

var ArticleSchema = new Schema({
  title: String,
  description: String,
  categories: [{ type : Schema.Types.ObjectId, ref: 'Category' }]
})
从端点开始,我想用类别更新文章。更新方法如下所示:

exports.update = function(req, res) {
  if(req.body._id) { delete req.body._id; }
  Article.findById(req.params.id, function (err, article) {
    if (err) { return handleError(res, err); }
    if(!article) { return res.send(404); }
    var updated = _.merge(article, req.body);

    updated.save(function (err, doc) {
      console.log(doc);
      if (err) { return handleError(res, err); }
      return res.json(200, article);
    });
  });
};

注意
console.log
语句。在
request.body
中,如果我正在发送类别ID列表,控制台将打印一篇包含类别的文章。但是,当我查看数据库时,category数组是空的。任何指向如何解决此问题的指针?

请参阅和。除了您所做工作中的其他固有问题之外,对这些页面的理解应该清楚地解释如何正确和安全地执行此操作。如果您执行
findbyiandupdate
操作,则模型不会经过任何验证。你能澄清一下现在的方式有什么问题吗?知道它为什么不起作用吗?是的,它不会通过任何架构验证,除非您在smarts中进行构建,否则它也不会“覆盖”在
.findById()
.save()
操作之间发生的任何其他事务中提交的数据。所以“不安全”。无论如何,猫鼬对象不是一个“普通对象”,在不将其转换为原始对象的情况下,基本上无法“合并”。请参阅。
toObject()