node.js - Mongoose:如何使用请求正文中存在的字段更新嵌套字段?
问题描述
希望更新 lookupSchema图像嵌套字段
var lookupSchema = new Schema({
images:{
"img1":String,
"img2":String,
"img3":String,
"img4":String
}
}
由于我不知道在findOneAndUpdate操作期间请求正文中有哪些字段可用,因此我无法像这样分配
$set: {
'images.img1': req.body.img1,
'images.img2': req.body.img2,
'images.img3': req.body.img3
}
如果我像上面那样编码并指定所有字段,由于请求中的字段不可用,更新后已经可用的字段变为空。
需要这样的东西来更新可用字段
$set: { "images.$[element]" : req.body }
我进行了很多搜索,但找不到解决方案。
解决方案
您可以简单地创建一个如下所示的函数来实现您的结果。
function update() {
let temp = {};
for(let field in req.body) {
temp["images."+field] = req.body[field];
}
db.collection.findOneAndUpdate({._id:...},{$set:temp},{upsert:true},function(err,result)
{...});
}
推荐阅读
- python - 在某个时间范围内从 google pub/sub 接收消息
- mysql - 参数化 SQL 查询
- javascript - 无法阻止输入字段自动填充
- xamarin.forms - 应用程序无法在 iPhone 上部署显示“ApplicationVerificationFailed:应用程序缺少应用程序标识符权利。”
- html - 输入类型号限制长度并允许 + 符号
- autodesk-forge - 是否可以使用 Design Automation API 从 Revit 模型导出 3d 视图?
- django - 在使用多个数据库时将记录插入表的 ManyToMany 字段
- python - 在函数中重塑 numpy 数组不起作用
- django-models - 使用 django 过滤器“__in”时有什么限制吗?
- react-native - 使用 react-navigation 的 navigate('routeName') 传递的参数不是响应式的