es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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.

Comments are closed.