Creé una API REST simple y ahora estoy tratando de conectarle un cliente front-end. Como parte de mi proceso de manejo de errores, quiero enviar cualquier error del lado del servidor como un objeto JSON a mi cliente, para poder mostrar los mensajes de error apropiados para el usuario.
Un ejemplo de mi código express de back-end:
try { const newPost = new Post({ title: req.body.title, body: req.body.body, author: author._id, }); await newPost.save(); res.json(newPost); } catch (err) { console.log(err); res.status(400).json({ err }); } Al realizar la prueba, console.log(err) en mi bloque catch imprime un objeto de error si falla la validación posterior, por ejemplo
errors: { title: ValidatorError: Path `title` is required. ... }Este es un ejemplo de cómo me comunico con la API desde mi cliente front-end.
fetch(url, options) .then((res) => { console.log(res); if (res.status !== 200) throw new Error(res); return res.json(); }) .then((data) => console.log(data)) .catch((err) => console.log(err)); }; La resolución console.log recoge el siguiente objeto:
body: ReadableStream locked: false bodyUsed: false headers: Headers {} ok: false redirected: false status: 400 statusText: "Bad Request" type: "basic" url: "http://localhost:3001/posts" A pesar de que mi back-end emitió un json(err) , esto no parece ser recogido en la respuesta anterior. Entonces, ¿cómo puedo hacer que fetch el objeto de error que estoy enviando desde el back-end?