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

153
Vistas
Llamada asíncrona a SQL Server dentro de una clase en otro archivo .JS

Tengo el siguiente código en un archivo llamado utils.js:

 class functions { validateUser(userId, userKey, sessionKey, plId) { let response = { validated: false, isAdmin: false, isCorporate: false } sql.connect(process.env.DB_CONNSTRING, function (err) { if (err) { msg.success = "0"; msg.message = "ERR_04: Could not connect to server."; res.json(msg); return; }; let sqlString = `SELECT userLevel FROM dbo.users WHERE (userId =@userId) AND (userKey = @userKey) AND (sessionKey = @sessionKey) and (plId = @plId)` let request = new sql.Request(); request.input('userId', sql.Int, userId); request.input('userKey', sql.NVarChar, userKey); request.input('sessionKey', sql.NVarChar, sessionKey); request.input('plId', sql.Int, plId); request.query(sqlString, function (err, results) { if (err) { msg.success = "0"; msg.message = "ERR_07: Could not connect to server."; res.json(msg); return; }; if (results.rowsAffected[0] != 0) { response.validated = true; if (results.recordset[0].userLevel == 1 || results.recordset[0].userLevel == 10) { response.isAdmin = true; }; if (results.recordset[0].userLevel == 10) { response.isCorporate = true; }; return (response); } else { return (response); }; }); }); }; } module.exports = { functions };

Que es básicamente para validar si el usuario registrado tiene las credenciales correctas.

Desde un segundo archivo .js, necesito este archivo:

 const utils = require('../utils/utils') const functions = new utils.functions;

y luego, en el router.post estoy llamando a validateUser así:

 let AuthUser = async () => { const string = await functions.validateUser(payload.body.credentials.userId, payload.body.credentials.userKey, payload.body.credentials.sessionKey, payload.body.credentials.plId); return string; }; let isValid = AuthUser(); console.log(isValid)

Pero en lugar de obtener los valores esperados en la consola, obtengo

 Promise { <pending> }

Intenté hacer validar usuario asíncrono pero sigo obteniendo los mismos resultados.

La idea es continuar ejecutando el código después de obtener y procesar los resultados de validateUser

Cualquier ayuda será apreciada.

Gracias.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

class functions { validateUser(userId, userKey, sessionKey, plId) { return new Promise((resolve, reject) => { try { let response = { validated: false, isAdmin: false, isCorporate: false } sql.connect(process.env.DB_CONNSTRING, function (err) { if (err) throw err let sqlString = `SELECT userLevel FROM dbo.users WHERE (userId =@userId) AND (userKey = @userKey) AND (sessionKey = @sessionKey) and (plId = @plId)` let request = new sql.Request(); request.input('userId', sql.Int, userId); request.input('userKey', sql.NVarChar, userKey); request.input('sessionKey', sql.NVarChar, sessionKey); request.input('plId', sql.Int, plId); request.query(sqlString, function (err, results) { if (err) { msg.success = "0"; msg.message = "ERR_07: Could not connect to server."; res.json(msg); resolve(res) } else { if (results.rowsAffected[0] != 0) { response.validated = true; if (results.recordset[0].userLevel == 1 || results.recordset[0].userLevel == 10) { response.isAdmin = true; }; if (results.recordset[0].userLevel == 10) { response.isCorporate = true; }; } resolve(response) } }); }); } catch (err) { reject(err) } }) }; } let AuthUser = () => { return new Promise(async (resolve, reject) => { try { const string = await functions.validateUser(payload.body.credentials.userId, payload.body.credentials.userKey, payload.body.credentials.sessionKey, payload.body.credentials.plId); resolve(string) } catch (err) { reject(err) } }) }; let isValid = await AuthUser(); console.log(isValid)

su consola. registrando la respuesta que aún no ha terminado de dispararse

over 4 years ago · Santiago Trujillo 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