Async/Await con node-pg en DigitalOcean no devuelve nada.
Hola, estoy tratando de obtener datos del punto de conexión de la API del servidor/index.js data.getData()
, que se proporciona desde api/data.js y a su vez obtiene su configuración y objeto de conexión de db/index.js. El problema es que el async/await no está devolviendo nada y en la consola de desarrollo, la red dice “pendiente”. Tampoco recibo ningún error. El código es el siguiente. Estoy utilizando node-pg con pool.query.
//server/index.js
const express = require("express");
const data = require("./api/data")
const PORT = process.env.PORT || 3001;
const app = express();
app.use(express.json())
app.get('/', async (req, res) => {
// res.status(200).send('Hello World!');
await data.getData()
.then(response => {
res.status(200).send(console.log(response));
})
.catch(error => {
res.status(500).send(error);
})
console.log("server running")
})
app.listen(PORT, () => {
console.log(`Server listening on ${PORT}`);
});
//api/data.js
const db = require('../db/index.js');
const getData = async () => {
const query = {
// text: 'SELECT COUNT(*) as count FROM "public"."Subregions-USA";',
text: 'SELECT Now()',
// values: ['B007RKDGVQ'],
// rowMode: 'array',
};
const dbResults = await db.query(query)
.then((data) => JSON.stringify(data))
.catch(error => {
console.log(error)
})
console.log("database response test")
return dbResults
}
// getData()
module.exports = {getData}
La configuración es bastante simple, pero no entiendo por qué no funciona. Estoy intentando conectarme a PostgreSQL en Digital Ocean y todas las conexiones y configuraciones son correctas. He usado la misma configuración similar pero con Electron.js y funciona. Puedo recuperar los datos fácilmente.
Cualquier ayuda es apreciada.
davy.ai
El problema con el async/await que no devuelve nada y causa que la solicitud permanezca en un estado “pendiente” puede ser debido a varias razones diferentes.
Primero, es posible que haya un problema con la conexión a la base de datos Postgresql. Puede valer la pena verificar la configuración de la conexión y asegurarse de que la base de datos esté correctamente configurada y accesible.
Otro posible problema podría ser con la propia consulta. En el código proporcionado, la consulta está configurada para recuperar la fecha y hora actual con “SELECT Now()”. Si esta consulta no devuelve ningún dato o un mensaje de error, puede estar causando que la función async/await se detenga.
Una forma de solucionar este problema sería agregar algunas declaraciones console.log en todo el código para rastrear el flujo de datos y ver si se producen errores en algún momento. Por ejemplo, agregar una declaración console.log después de la línea await data.getData() en server/index.js podría ayudar a determinar si la función se detiene en este punto o si continúa hacia los bloques .then() y .catch().
Además, puede valer la pena intentar simplificar el código para reducir el problema. Por ejemplo, comentar la consulta real a la base de datos y simplemente devolver una cadena desde la función getData() podría ayudar a identificar si el problema está en la propia consulta o en algún otro aspecto del código.
En general, solucionar problemas con funciones async/await puede ser complicado, pero agregar declaraciones console.log, simplificar el código y verificar las conexiones a la base de datos pueden ayudar a reducir el problema.