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()
。