express - 仅更新 Mongoose 中更改的字段
问题描述
我正在尝试使用 ExpressJS 和 Mongoose 更新子文档。但只有更改的字段。但不知何故,它更新了所有必要的字段,也更新了不需要更改的字段。
这是 ExpressJS 中的更新函数:
postController.updateMessage = function(req, res, item) {
var id = req.body.id;
var saveData = {
title: req.body.title,
text: req.body.text,
title_double: req.body.title_double,
text_double: req.body.text_double
};
item.findOneAndUpdate({'subitem.messages._id': id}, {$set:{'subitem.$.messages': saveData}}, {upsert: true, new: true},(error, result) => {
console.log(result);
console.log(error);
});
};
这是猫鼬模型:
var submessages = mongoose.Schema({
date: String,
type: String,
title: String,
text: String,
title_double: String,
text_double: String
});
var subitems = new mongoose.Schema({
title: String,
messages: [submessages]
});
var menuItems = new mongoose.Schema({
title : String,
subitem: [subitems]
}, {collection: 'menu_items'});
module.exports = mongoose.model("menu_items", menuItems);
解决方案
你有两个嵌套数组,而你在一个数组上检查/条件
{$set:{'subitem.$.messages.$': saveData}}
在你的情况下类似的事情
推荐阅读
- javascript - 离开 iPhone 上的 Chrome 选项卡时,Opentok stream.hasAudio 为假
- r - 在R中使用带有折叠的粘贴时如何创建引号
- python - 绘制多个模型成本
- javascript - 在 React 中显示复选框的值
- antlr4 - 至少一个 Antlr 规则可选部分
- javascript - 如何使用 JS/jQuery 通过 PHP 代理向 API 发送请求
- laravel - 使用 sanctum 的 SPA 身份验证失败,并显示以下错误消息:“未经身份验证”。
- java - 期待 IDENT,找到 ':'
- python - 在 Jupyter 砍属性
- javascript - 单击图库中的缩略图时显示 Swiper 滑块