Después de enviar una solicitud de axios a mi servidor Node, ¿cómo puedo responder cuando "rechazo" la ruta/solicitud de Axios y termino en la "captura ()" de mi código del lado del cliente? Sé que "res.send(data)" o "res.json(data)" se resolverán en "then()" de la promesa. ¿Hay algo con lo que pueda responder que lo rechace?
axios.post('/edit-item', {_id: id, updateText: editInput.value, author: author}).then((response) => { e.target.parentElement.parentElement.children[3].innerHTML = `${response.data}` }).catch(() => { //I want to end up here by responding with something from the server })Puede generar un error en Node.js que será manejado por el controlador de errores interno, o puede devolver el código de estado de su elección
Levantando un error:
app.post(req, res, next) { throw new Error('Something went wrong')Devolviendo mensaje de error:
app.post(req, res, next) { res.status(500).send({ error: 'Something failed!' }) } en lugar de 500 , puede ingresar cualquier código de estado de error allí
Una vez que devuelva un código de error, axios irá a la sección de catch
Puede encontrar más información sobre el manejo de errores aquí: manejo de errores
Devuelva cualquier cosa con el código de estado http que no esté en el estado de rango status >= 200 && status < 300 de su servidor lo colocará en el bloque .catch de forma predeterminada:
// `validateStatus` defines whether to resolve or reject the promise for a given // HTTP response status code. If `validateStatus` returns `true` (or is set to `null` // or `undefined`), the promise will be resolved; otherwise, the promise will be // rejected. validateStatus: function (status) { return status >= 200 && status < 300; // default }https://axios-http.com/docs/handling_errors
Puede anular el estado de validateStatus para definir en qué casos se resolved/rejected la axios Promise