我在将数据从客户端发布到服务器时遇到问题。具体来说,在使用此端点时,我不断收到“未定义”错误,而我的其他端点工作正常。我尝试调试该问题,发现当我控制台记录“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;
如果我的错误能够得到纠正,我将非常感激
你错误地用中间件中的res交换了req
Below is the correct way:
router.post('/password-reset',(req,res)=>{
console.log(req.body)
})