在回调中删除对象中的属性失败

时间:2017-06-19 00:50:50

标签: javascript node.js express

我必须发送我的jwt,但我不想包含密码属性。我做了delete result.password,但我仍然看到密码在那里。我试过result.password = ''我可以看到密码被更改,为什么删除不在这里工作?

  User.comparePassword(password, user.password , (err, result) => {
            if(result === true){
              User.getUserById(user._id, (err,result) => {

                delete result.password

                console.log(result)


                const secret = config.secret;
                const token = jwt.encode(result, secret);


                res.json({success: true, msg: token});

              });


            }else{
              res.json({success: false, msg: 'Error, Incorrect password!'});
            }
          });

1 个答案:

答案 0 :(得分:-1)

结果对象可能已被Object.freeze( result )调用冻结。您可以使用Object.isFrozen( result ) === true确认。或者,如果可以删除该属性,delete result.password将返回true,否则将false