Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 虽然I';我在变异它_Javascript_Node.js_Json - Fatal编程技术网

Javascript 虽然I';我在变异它

Javascript 虽然I';我在变异它,javascript,node.js,json,Javascript,Node.js,Json,接下来的代码片段将从用户JSON对象中删除password属性,并将其作为响应返回。发生的情况是,密码属性仍在返回 const signin = (req, res, next) => { let requestBody = req.body; userModel.findUserByEmail(requestBody.email).then(user => { bcrypt.compare(requestBody.password, user.p

接下来的代码片段将从用户JSON对象中删除password属性,并将其作为响应返回。发生的情况是,密码属性仍在返回


const signin = (req, res, next) => {
    let requestBody = req.body;

    userModel.findUserByEmail(requestBody.email).then(user => {
        bcrypt.compare(requestBody.password, user.password, (error, result) => {
            if (!result) {
                return res.status(500).json({
                    status: false,
                    message: 'Auth Failed!',
                    error
                });
            }

            if (error) {
                return res.status(500).json({
                    error
                });
            }

            let token = jwt.sign({
                email: user.email,
                userId: user._id
            }, 
            process.env.JWT_KEY, 
            {
                expiresIn: "2h"
            });

            // remonve password key
            delete user.password

            res.status(200).json({
                status: true,
                message: 'Authenticated!',
                data: {
                    token,
                    user
                }
            });
        });

    }).catch(error => {
        return res.status(500).json({
                status: false,
                message: 'Auth Failed!',
                error
            });
    });
}

不确定问题是否与异步编译有关

您可以在不使用密码的情况下创建新对象,并在响应中使用该密码:

const{password,…restOfUser}=user
res.status(200).json({
状态:正确,
消息:“已验证!”,
数据:{
代币
用户:restOfUser
}
})

我认为您应该删除这样的元素:删除用户['password'],而不是使用
delete user.password使用
Reflect.deleteProperty(用户,“密码”)
然后检查它是否返回
true
。以上两条注释不正确,请参阅和。Asker使用delete是正确的,问题可能是代码没有显示。@Klaycon确定属性是否实际被删除有什么不正确之处?@zfrisch
delete user。如果属性绝对不在对象上,password
也将返回
true
,否则返回
false
,必须使用Reflect是完全不必要的,而且是一种非常巧妙的解构用法。必须记住,这是从对象复制大多数但不是所有属性的方法。