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

308
Vistas
Valor de retorno de NodeJS en axios get

Tengo esta clase escrita en javascript pero tengo dificultad para obtener el resultado de la solicitud de axios, a continuación mi situación para explicar mejor el problema:

tengo un archivo llamado vtiger.js en el directorio de clases en la raíz del proyecto

vtiger.js

 const axios = require('axios'); var md5 = require('md5'); var qs = require('qs'); const https = require('https'); class vTiger { constructor() { this.url = process.env.VTIGER_URL; this.username = process.env.VTIGER_USERNAME; this.password = process.env.VTIGER_PASSWORD; } async getchallengeTokenVtiger() { var token; var tokenmd5 = false; var url = this.url + 'webservice.php?operation=getchallenge&username=' + this.username; axios.get(url, { headers: { "content-type": "application/x-www-form-urlencoded" }, httpsAgent: new https.Agent( { rejectUnauthorized: false }) }).then(response => { if (response.data.success) { token = response.data.result.token; tokenmd5 = md5(token + this.password); return tokenmd5; } }); } } module.exports = vTiger

luego tengo un archivo llamado api.js en la carpeta de controladores con este contenido:

 const http = require('http'); const axios = require('axios'); var qs = require('qs'); const vTiger = require('../classes/vtiger'); exports.welcome = (req, res, next) => { const vtigerClass = new vTiger(); console.log(vtigerClass.getchallengeTokenVtiger()) res.status(200).json({ data: vtigerClass.getchallengeTokenVtiger() }); }

de este archivo como respuesta obtengo:

 { "data": {} }

mientras que desde la línea console.log(vtigerClass.getchallengeTokenVtiger()) obtengo esto:

 Promise { undefined }

¿Dónde estoy haciendo mal?

Gracias

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

0

probablemente no quiera usar .then en una función asíncrona. debería

 const response = await axios.get(...) if (response.data.success) { token = response.data.result.token; tokenmd5 = md5(token + this.password); return tokenmd5; } else return null;

O puede crear una variable en su función llamada tokenmd5, es decir

 let tokenmd5 = ''

establezca su valor en .then, luego devuelva tokenmd5 al final de su función NO en .then

ENTONCES: para tu console.log quieres:

 exports.welcome = async (req, res, next) => { const vtigerClass = new vTiger(); console.log(await vtigerClass.getchallengeTokenVtiger()) res.status(200).json({ data: vtigerClass.getchallengeTokenVtiger() }); }
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