Estoy tratando de autenticar al usuario. El registro funciona bien, pero el req.body.email de inicio de sesión no está definido y no puedo entender por qué. Aquí está mi código para iniciar sesión:
router.post('/signin',(res,req,next)=>{ User.findOne({ email: req.body.email }) .exec() .then(user => { if(user.length<1){ return res.status(401).json({ message: 'Auth Failed' }) } bcrypt.compare(req.body.password, this.user[0].password, (err,result)=>{ if(err){ return res.status(401).json({ message: 'Auth Failed' }); } if(result){ return res.status(200).json({ message: 'Auth Successful' }); } res.status(401).json({ message: 'Auth Failed' }); }) }) .catch(err => { console.log(err); res.status(500).json({ error: err }); }) })En el cartero:
{ "email": "test@gmail.com", "password": "12345" }Error de la consola:
TypeError: Cannot read properties of undefined (reading 'email') at C:\Users\SJPC\auth\routes\user.route.js:62:37 at Layer.handle [as handle_request] (C:\Users\SJPC\auth\node_modules\express\lib\router\layer.js:95:5) at next (C:\Users\SJPC\auth\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (C:\Users\SJPC\auth\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (C:\Users\SJPC\auth\node_modules\express\lib\router\layer.js:95:5) at C:\Users\SJPC\auth\node_modules\express\lib\router\index.js:281:22 at Function.process_params (C:\Users\SJPC\auth\node_modules\express\lib\router\index.js:341:12) at next (C:\Users\SJPC\auth\node_modules\express\lib\router\index.js:275:10) at Function.handle (C:\Users\SJPC\auth\node_modules\express\lib\router\index.js:174:3) at router (C:\Users\SJPC\auth\node_modules\express\lib\router\index.js:47:12)Probé req.query.email pero también arrojó el mismo error.
Debes agregar este código
app.use(express.json())