控制台记录 req.body 后得到未定义

问题描述 投票:0回答:1

我在将数据从客户端发布到服务器时遇到问题。具体来说,在使用此端点时,我不断收到“未定义”错误,而我的其他端点工作正常。我尝试调试该问题,发现当我控制台记录“req”对象时,我可以看到数据,但是当我尝试使用“req.body”访问它时,我得到“未定义”。

对于上下文,我已经安装了 body-parser 并将其放置在调用我的端点之前。如果有人有任何想法或建议,我将非常感激。预先感谢!

我的server.js

const express = require('express'); 
const app = express(); 
const port = 8002;
const UserRouter = require('./controllers/user')
const passwordResetRouter = require('./controllers/passwordReset')
app.use(express.json())
const cors = require('cors');
app.use(cors());
app.use(UserRouter);
app.use(passwordResetRouter);
app.listen(port, () => {
    console.log(`App listening on port ${port}`);
});

注意我的 userRouter 中的每个端点都正常工作,但在我的密码重置中,这就是显示错误的地方。
这是我的密码重置路由器代码

const express = require('express')
const router = express.Router();
const bcrypt = require('bcrypt');
router.post('/password-reset',(res,req)=>{
    console.log(req.body)
    const otp = req.body.otp;
    const currentTimeUserInputedOtp = new Date().toISOString().slice(0,19).replace('T', ' ');
    const checkOtpPassword = `SELECT * FROM password_reset WHERE otp = ? AND expired_at >= ? `;
    db.query(checkOtpPassword, [otp, currentTimeUserInputedOtp], (err,data) =>{
         if(err){
            console.log(err)
           return res.json('An error occurred')
        }else if(data.length > 0){
            const usersEmail = data[0].email
            const checkUserEmail = `SELECT * FROM users WHERE email = ?`
            db.query(checkUserEmail, [usersEmail], (err,data)=>{
                if(err){
                    return res.json("An error Occurred")
                } if(data.length > 0){
                    const usersNewPassword = req.body.newPassword;
                    bcrypt.hash(usersNewPassword, saltRoundsForBcrypt,(err, hashedPassword)=>{
                        if(err){
                            res.json('An error occured')
                        }else{
                            const updateUserPassword = `UPDATE users SET password = ? WHERE email = ?`
                            db.query(updateUserPassword, [hashedPassword, usersEmail], (err)=>{
                                if(err){
                                    return res.json('An error occurred updating user password')
                                }else{
                                    return res.json('Succesful')
                                }
                            })
                        }
                    })
                   
                }
            })
        }
        else{
          return res.json('Invalid otp')
         }
    })
})
module.exports = router;

如果我的错误能够得到纠正,我将非常感激

javascript node.js undefined
1个回答
0
投票

你错误地用中间件中的res交换了req

Below is the correct way:

router.post('/password-reset',(req,res)=>{
  console.log(req.body)
})
© www.soinside.com 2019 - 2024. All rights reserved.