javascript - 如何在 Javascript 中一次更改对象的多个属性?
问题描述
我正在尝试使用猫鼬更新文档。我想一次更新多个属性。我尝试使用扩展运算符来克隆文档并覆盖需要使用用户输入更新的属性,但它返回了 error document.save is not a function
。我有点理解它为什么会抛出错误。因为它不是同一个对象,它只是一个克隆,所以它没有save
方法。如果我错了,请纠正我。所以我的问题是:有没有办法像使用扩展运算符一样更新对象?
我的代码:
router.put("/posts/update", (req, res)=>{
const {id, updatedFields} = req.body;
Post.findById(id).exec((err, post)=>{
if(err) throw err;
post = {...post, updatedFields};
post.save();
res.json(post);
})
});
解决方案
您可以使用Object.assign
post= Object.assign(post, updatedFields);
assign 函数可以接受任意数量的参数。每个参数都应用在最左边,从左到右。因此,如果多个参数具有相同的属性,则其值将是右边的一个。
推荐阅读
- c# - Selenium 抛出错误 NoSuchElementException 抛出
- asp.net-core - 以编程方式调用 ASP.NET Core 请求管道
- python - 在python中使用相对路径
- c# - 使用 websocket 连接两个设备
- angular - 如何在角度材料中获取复选框数据
- go - 在 golang 中加载语言 JSON 文件的最佳方法是什么?
- python - Django 查询引擎 - 从 1.11 迁移到 2.0
- node.js - 超级账本结构设置问题
- php - 过滤数据后从表中提交值无法正常工作
- mysql - 根据 SQL 中的特定客户时间获取及时交货的数量