Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

706
Vistas
Conectar AWS RDS con error de Node JS: no se puede leer la propiedad 'consulta' de indefinido

Estaba intentando conectar AWS RDS con mi aplicación Node JS. Probé la conexión de RDS con MySQLWorkbench y se pudieron recuperar los datos. Sin embargo, al intentar obtener una conexión en mi aplicación Node, recibí un error:

 TypeError: Cannot read property 'query' of undefined

Mi código de Node JS es el siguiente:

 const express = require('express'); const cors = require('cors'); const mysql = require('mysql'); const app = express(); const SELECT_ALL_QUERY = 'SELECT * FROM `my-schema`.`my-table`;'; app.use(cors()); app.get('/', (req, res) => { res.send('go to /my-table to see contents') }); const pool = mysql.createPool({ connectionLimit: 10, host: "process.env.myHostname", user: 'process.env.myUsername', password: 'process.env.myPassword', port: "process.env.3306", database: 'my-schema', debug: false }); pool.getConnection((err, connection) => { app.get('/my-table', (req, res) => { console.log(connection); connection.query(SELECT_ALL_QUERY, (err, results) => { if (err) { return res.send(err) } else { return res.json({ data: results }) }; }); }); }); let port = process.env.PORT || 4000; app.listen(port, () => { console.log(`App running on port ${port} `); });

Por lo que parece, la conexión no estaba definida, ¿no se pudo conectar? Si es así, ¿por qué puedo ver los datos en MySQLWorkbench?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

2 cosas:

Primero, está creando un grupo con valores no válidos. Este:

 const pool = mysql.createPool({ connectionLimit: 10, host: "process.env.myHostname", user: 'process.env.myUsername', password: 'process.env.myPassword', port: "process.env.3306", database: 'my-schema', debug: false });

DEBE ser esto:

 const pool = mysql.createPool({ connectionLimit: 10, host: process.env.myHostname, user: process.env.myUsername, password: process.env.myPassword, port: process.env.myPort, database: 'my-schema', debug: false });

En segundo lugar, ¿cómo se ve err cuando console.log(err) 'd? Cambia esta parte:

 pool.getConnection((err, connection) => { app.get('/my-table', (req, res) => { console.log(connection); connection.query(SELECT_ALL_QUERY, (err, results) => { if (err) { return res.send(err) } else { return res.json({ data: results }) }; }); }); });

A esto:

 pool.getConnection((err, connection) => { if (err) { return console.log('ERROR!', err); } if (!connection) { return console.log('No connection was found.'); } app.get('/my-table', (req, res) => { connection.query(SELECT_ALL_QUERY, (err, results) => { if (err) { return res.send(err) } return res.json({ data: results }); }); }); });
over 4 years ago · Santiago Trujillo Denunciar

0

Hermano, si usará el método createPool() con process.env, no olvide crear un archivo .env en el proyecto raíz y declarar las variables myHostname, myUsername, myPassword y myPort. Pero para que pruebes tu conexión más fácilmente usa esto:

 const mysql = require('mysql'); const connection = mysql.createConnection({ host : 'localhost', user : 'root', password : 'secret', database : 'your_database' }); connection.connect(); connection.query('SELECT * FROM `my-schema`.`my-table`', function (error, results, fields) { if (error) throw error; console.log(results); }); connection.end();

over 4 years ago · Santiago Trujillo Denunciar

0

TypeError: Cannot read property 'query' of undefined

El error anterior no es el error real, ya que esto ocurre durante el tiempo de consulta, mientras que debería detectar el error durante el tiempo de conexión. Una vez que la solución que publicó @NeoNexus DeMortis al hacer esto, obtendrá el error real.

Pero recomendaré verificar la conexión de la base de datos en el inicio de la aplicación para que al menos la aplicación verifique y espere la conexión de la base de datos antes de atender la solicitud del usuario y también evitará que la aplicación entre en un estado roto.

 pool.getConnection((err, connection) => { if (err) console.log(err) else{ console.log("DB connected successfully host:",connection.config.host," DB:",connection.config.database) app.emit('ready'); } }); app.on('ready', function() { let port = process.env.PORT || 4000; app.listen(port, () => { console.log(`App running on port ${port} `); }); });

En un esfuerzo por mantener las cosas simples y concisas, muchos tutoriales pasan por alto uno de los aspectos más humanos e intuitivos del desarrollo de JavaScript con node. EventEmitter del nodo.

esperando-las-conexiones-db-antes-de-la-aplicación-escuchar-en-el-nodo

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda