Estaba haciendo un curso en MERN Stack y durante eso encontré un problema. Para una página de envío de formulario, el manejo de errores de backend se realizó de esta manera:
router.put('/education' , [auth , check('school','School is required').notEmpty(), check('degree','Degree is required').notEmpty(), check('fieldofstudy','Field of Study is required').notEmpty(), check('from','From date is required').notEmpty() ], async (req,res)=>{ const errors = validationResult(req); if(!errors.isEmpty()){ return res.json({ errors:errors.array()}); } const { school, degree, fieldofstudy, from, to, current, description } = req.body; const newEdu = { school, degree, fieldofstudy, from, to, current, description } try { const profile = await Profile.findOne({ user: req.user.id }) if(profile) console.log('profile found req body is', req.body ) profile.education.unshift(req.body); console.log('unshifted') await profile.save(); res.json({ profile }) } catch (err) { res.status(500).send("Server Error"); } })Ahora, si uso Postman para enviar algunos datos sin procesar en blanco como entradas del formulario, devuelve los errores que se supone que debe hacer.
El código de interfaz utilizado para realizar esta solicitud se parece a esto:
export const addEducation = (formData, navigate )=> async dispatch => { try { const res = axios.put('http://localhost:5000/api/profile/education',formData) dispatch({ type: UPDATE_PROFILE, payload: res.data }); dispatch(setAlert('Education Added', 'success')) navigate('/dashboard') } catch (err) { const errors = err.response.data.errors; if (errors) { errors.forEach((error) => dispatch(setAlert(error.msg, 'danger'))); } dispatch({ type: PROFILE_ERROR, }); } }Los datos del formulario se envían a través de la página del formulario al enviar el formulario.
Lo que hace este código es incluso si todos los campos están vacíos, simplemente envía el formulario y establece la alerta en 'Educación agregada' y navega a '/ tablero'. La base de datos no muestra ninguna entrada de un campo de Educación vacío. Además, las etiquetas de entrada en el formulario no tienen un conjunto de atributos 'requeridos'.
¿Por qué no detecta los errores y establece alertas para ellos?
¡Soy bastante nuevo en MERN, por lo que cualquier ayuda será muy apreciada!