首页 > 解决方案 > 如何在 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);
    })
});

标签: javascriptobjectmongoose

解决方案


您可以使用Object.assign

post= Object.assign(post, updatedFields);

assign 函数可以接受任意数量的参数。每个参数都应用在最左边,从左到右。因此,如果多个参数具有相同的属性,则其值将是右边的一个。


推荐阅读