Estoy escribiendo un código en express js que publicará datos y creará un registro. El registro tarda de 1 a 3 segundos en crearse, no estoy seguro de cuánto tiempo llevará. ¿Hay alguna forma de redirigir a ese registro después de crearlo?
Aquí está mi código actual.
router.post("/recipePost", async (req, res) => { var body = req.body; var axios = require("axios"); var data = JSON.stringify({ "name":"john" }); var config = { method: "post", url: "https://myEndpoint.com", headers: { "Content-Type": "application/json", }, data: data, }; try { var resData = await axios(config); navigateToRec(resData.data.response.meta.id); } catch (err) { console.log("err"); } });y mi método de navegación es el siguiente.
navigateToRec = async (recId) => { console.log("recId" + recId); const resp = await axios.get( `https://myEndpoint.com/${recId}` ); try { res.send({ redirect: "/recipeDetail/" + resData.data.response.meta.id }); } catch (err) { this.navigateToRec(rec); } }; Básicamente, intentar llamar al mismo método hasta que la creación del registro sea un éxito. Pero aquí console.log("recId" + recId); está imprimiendo el Id creado. Por favor, hágame saber dónde me estoy equivocando y cómo puedo solucionarlo.
aquí está el error
(nodo: 83576) UnhandledPromiseRejectionWarning: Error: la solicitud falló con el código de estado 404 en createError (/Users/rkeerthi/Desktop/Node js/yext-site/node_modules/axios/lib/core/createError.js:16:15) en liquidación (/Users/rkeerthi/Desktop/Node js/yext-site/node_modules/axios/lib/core/settle.js:17:12) en IncomingMessage.handleStreamEnd (/Users/rkeerthi/Desktop/Node js/yext-site/ node_modules/axios/lib/adapters/http.js:293:11) en IncomingMessage.emit (events.js:412:35) en endReadableNT (interno/streams/readable.js:1317:12) en processTicksAndRejections (interno/proceso /task_queues.js:82:21) (Use
node --trace-warnings ...para mostrar dónde se creó la advertencia) (node:83576) UnhandledPromiseRejectionWarning: Rechazo de promesa no manejado. Este error se originó al lanzar dentro de una función asíncrona sin un bloque catch o al rechazar una promesa que no se manejó con .catch(). Para finalizar el proceso del nodo en caso de rechazo de la promesa no controlada, utilice la marca CLI--unhandled-rejections=strict(consulte https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode ). (Id. de rechazo: 2) (nodo: 83576) [DEP0018] Advertencia de desuso: los rechazos de promesa no controlados están en desuso. En el futuro, los rechazos de promesas que no se controlen terminarán el proceso de Node.js con un código de salida distinto de cero.