Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

698
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!