簡體   English   中英

盡管我正在改變它,但對象返回相同

[英]Object is returned the same although I'm mutating it

即將到來的代碼片段是從用戶 JSON 對象中刪除密碼屬性並返回它作為響應。 發生的事情是密碼屬性仍在返回!


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({
  status: true,
  message: 'Authenticated!',
  data: {
    token
    user: restOfUser
  }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM