Estoy intentando configurar una API que se extrae de una base de datos de Azure utilizando la biblioteca tediosa.
Tengo una función queryDatabase() que envía una consulta de selección a una base de datos SQL de Azure. Envía la solicitud de consulta y luego devuelve una Promesa esperando la respuesta de la base de datos:
function queryDatabase(){ const request = new Request( `select * from [dbo].[table1];`, (err, rowCount) => { if (err) { console.error(err.message); } } ); return new Promise((resolve,reject)=>{ const result = []; request.on("row", (columns) => { const entry = {}; columns.forEach((column) => { entry[column.metadata.colName] = column.value; }); result.push(entry); }); request.on('done',()=>resolve(result)); // resolve the promise with the result rows. request.on('error',error=>reject(error));// some error happened, reject the promise connection.execSql(request); }); }Luego, para el uso, tengo un enrutador escuchando /datos que se supone que debe llamar al método queryDatabase() y esperar a que se cumpla la Promesa. Una vez que se cumple, debe responder con los datos en formato JSON, sin embargo, la Promesa de queryDatabase() nunca parece cumplirse ni fallar, ya que la página se atasca al cargar:
router.get("/data", cors(), function (req, res) { queryDatabase().then(rows=>{ res.type('application/json'); res.send(JSON.stringify(rows)); }) .catch(error=>{ res.status(500); res.render('error, ', {error: error}); }); });Cualquier ayuda sobre por qué no funciona correctamente sería increíble, saludos