如何用一行代码在Express的app.patch中更新数组对象多属性?
简化Express PATCH接口的对象属性赋值代码
你可以使用Object.assign()方法,将请求体中的属性批量合并到找到的对象上,替代原来的逐行赋值操作:
修改后的代码示例:
app.patch("/tabak/:id", (req, res) => { const { id } = req.params; const foundTabak = tabakArray.find(t => t.id === id); // 一行代码完成多个属性赋值 Object.assign(foundTabak, req.body); res.redirect("/tabak"); });
如果需要严格限制只更新指定属性(避免请求体中携带多余字段),可以先解构出需要的属性再传入:
app.patch("/tabak/:id", (req, res) => { const { id } = req.params; const { name, brand, flavour, score, desc } = req.body; const foundTabak = tabakArray.find(t => t.id === id); Object.assign(foundTabak, { name, brand, flavour, score, desc }); res.redirect("/tabak"); });
Object.assign()的作用是将一个或多个源对象的可枚举属性复制到目标对象,这里刚好实现批量更新目标对象属性的需求,完全替代原来的五行赋值代码。
内容的提问来源于stack exchange,提问作者philk92
相关产品推荐
相关产品推荐

