首页 > 解决方案 > req.body 在分配给变量后更改值

问题描述

我真的不明白这里发生了什么,并希望指出我的假设中的缺陷:

 putUser: async (req, res, next) => {
        console.log('test1', req.body)
        let data = req.body
        data["local.password"] = 'xd121244212141243'
        console.log('test2', data)
        console.log('test3', req.body)

此代码块产生的结果为:

test1 { 'local.username': 'name','local.password': 'passwordToChange' }
test2 { 'local.username': 'name','local.password': 'xd121244212141243' }
test3 { 'local.username': 'name','local.password': 'xd121244212141243' }

所以问题是,为什么 req.body 的值会发生变化?这是因为我们指向对象而不是创建新对象吗?

标签: javascriptnode.jsexpress

解决方案


这是因为我们指向对象而不是创建新对象吗?

是的。

 let data = req.body

req.body这将从to复制对对象的引用data,因此它们都引用同一个对象。改为复制:

 let data = { ...req.body };

推荐阅读