Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

138
Vistas
Uso de la respuesta de una función de llamada a la API de Axios/NodeJS como parámetro para realizar otra llamada a la API

Concepto general: estoy accediendo a dos puntos finales de API. Uno responde con información general y el otro con información específica.

He llamado al primer punto final y con la respuesta, devuelvo un objeto en el formato que requiere el segundo punto final como parámetro.

Problema: sigo recibiendo "Los datos después de la transformación deben ser una cadena, un ArrayBuffer, un Buffer o un Stream"

Quiero aprender a usar funciones en todos los controladores, para no tener que REPETIRME.

Código:


Esto devuelve el objeto que necesito usar en la segunda llamada a la API:

 const axios = require("axios"); const getSpecials = async (req, res) => { try { const response = await axios.get(`${apiURL}/categories`); let specials = []; let skus = []; response.data.forEach((element, index) => { if (response.data[index].is_special == true) { specials.push({ name: response.data[index].name, product_skus: response.data[index].product_skus, _id: response.data[index]._id, }); skus.push(response.data[index].product_skus); } }); return { product_skus: skus.flat() }; } catch (error) { console.log(error.message); } }; module.exports = {getSpecials}

Esto devuelve los detalles del producto si publico el retorno de la primera llamada a la API como parámetro:

 const axios = require("axios"); const { getSpecials } = require("./categoriesControllers"); const specialProducts = async (req, res) => { try { const response = await axios.post(`${apiURL}/products`, getSpecials); res.status(200).json(response.data); } catch (error) { console.log(error.message); } };

Cualquier sugerencia sobre la mejor manera de hacer esto sería genial. Quiero aprender a dejar que el backend haga todo el trabajo pesado y quiero servir los datos de la manera más limpia posible al front-end.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si entiendo correctamente, solo necesitas cambiar

const response = await axios.post(`${apiURL}/products`, getSpecials);

a esto

const response = await axios.post(`${apiURL}/products`, await getSpecials());

porque en este momento está pasando una declaración de función al segundo argumento de la función de publicación de axios, no un valor de retorno de getSpecials

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda