HTTP PATCH语义与mongoose子文档
我有一个包含多个Layer子文档的Map文档,并希望实现HTTP PATCH,因此只有JSON的给定属性才能更新Layer子文档。 下面的代码工作,但我必须指定每个可以更改的属性。 有没有更好的方法来做到这一点?
var update = {}; if (req.body.name !== undefined) update['layers.$.name'] = req.body.name; if (req.body.isDefault !== undefined) update['layers.$.isDefault'] = req.body.isDefault; if (req.body.isPublic !== undefined) update['layers.$.isPublic'] = req.body.isPublic; Map.model.findOneAndUpdate({_id: req.params.mapId, 'layers._id': req.params.layerId}, update, callback);
你可以像这样做一个函数:
function updateParams(reqParams,additionalInfo) { var update = {}; for(var paramName in reqParams) { if(reqParams.hasOwnProperty(paramName)) { if(reqParams[paramName]!==undefined) { update[additionalInfo+paramName] = reqParams[paramName]; } } } return update; } updateParams(req.body,'layers.$.');
我有你认为JsonPatch这个项目转换json补丁到mongoprimefaces更新:jsonpatch到mongodb
- 水线0.10.14 + express – beforeCreate不执行
- 在node.jsexpression式中,对“/ locations / search”的请求总是进入“/ locations /:location_id”,如何以正确的方式进行路由
- 如何在nodejs中的集群之间共享可变数据?
- Node.js Socket.io和Express:不断向setInterval方法以外的客户端发送数据
- 最好的方式来裁剪和上传图像与快递?
- 浏览器不发回cookies,但curl
- Node js – 使用Express提供大量文件
- 无法使用Passport.js和Express 4访问req.user
- asynchronous问题,同时上传多个文件