¿Cómo puedo devolver correctamente los datos que quiero de una consulta postgre?
function getTableName() { let queryTableName = `SELECT * FROM admin.information_schema.tables;`; let response; client.query(queryTableName).then(res => { let names = Array(); for (let i = 0; i < res.rowCount; i++) { names.push(res.rows[i]['table_name']); } response = names; }).catch(err => { console.error(err); }); return response; }Su código devuelve la respuesta de forma sincrónica , antes de que el resultado de la consulta llegue desde la base de datos de forma asincrónica . Por lo tanto, lo que devuelve aún no está definido.
Debe convertir getTableName en una función asíncrona o implementar un middleware rápido, que es asíncrono por naturaleza:
app.get("/path", function(req, res, next) { let queryTableName = `SELECT * FROM admin.information_schema.tables;`; client.query(queryTableName).then(resp => { let names = Array(); for (let i = 0; i < resp.rowCount; i++) { names.push(resp.rows[i]['table_name']); } res.json(names); }).catch(err => { console.error(err); next(err); }); });