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.
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