我试图使用Express将数组添加到Mongoose中的现有子文档中,但是我似乎无法弄清楚
这是我的猫鼬模型:
var subitems = new mongoose.Schema({
_id: ObjectId,
title: String,
messages: Array
});
var menuItems = new mongoose.Schema({
title : String,
subitem: [subitems]
}, {collection: 'menu_items'});
module.exports = mongoose.model("menu_items", menuItems);
我正在使用子文档中的ID更新“子项目”中的特定项目 这是Express Update:
postController.postArticles = function(req, res,item) {
var id = req.body.id;
var saveData = {
title: req.body.title,
text: req.body.text
};
item.update({_id: id}, {$push:{messages: saveData}},(err, result) => {
});
};
它没有在数据库中添加任何东西,有人有想法吗?
答案 0 :(得分:0)
使用猫鼬,您必须更新整个对象。因此,首先要使用find或findOne获得项,然后必须使用push将元素添加到数组中,最后调用猫鼬对象的.save()方法。 像这样:
postController.postArticles = function(req, res,item) {
var id = req.body.id;
item.findOne({_id: id}, function(error, myItem) {
var saveData = {
title: req.body.title,
text: req.body.text
};
myItem.messages.push(saveData);
myItem.save();
});
};