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

268
Views
Consultando una conexión Mysql en nodejs usando connectionPool

Estoy trabajando para hacer un sitio web usando Nodejs, express y MySQL.

El problema al que me enfrento es que con la forma en que hago mi conexión y consultas a la base de datos en este momento, la conexión siempre está conectada, por lo que al final se agota el tiempo de espera. Intenté usar Pools pero tengo un problema cuando quiero que las conexiones se llamen a través de una función y luego devuelvan los resultados de la consulta para que no tenga que repetir el mismo código cada vez que quiera consultar eso específico consulta.

Así es como lo tengo ahora donde creo una conexión y luego, cada vez que se llama a una función, consulta el código y devuelve los resultados de la consulta.

 const mysql = require('promise-mysql'); let db; (async function (err) { db = await mysql.createConnection({ host: dotenv.parsed.DB_HOST, user: dotenv.parsed.DB_LOGIN, password: dotenv.parsed.DB_PASSWORD, database: dotenv.parsed.DB_NAME, charset: dotenv.parsed.DB_CHAR, multipleStatements: dotenv.parsed.DB_MULTI }); if (err){console.log(err);}; process.on('exit', () => {db.end()}); })(); /** * @description gets the user's personnumber and password * @param {*} personnummer is the personal number issued by the Swedish government for the person in question */ async function getPat(personnummer) { let sql = "SELECT * FROM patients where personnummer=?"; let res = await db.query(sql, [personnummer]); return res; }

Entonces, ¿cómo haría para hacer eso en las piscinas? porque cuando trato de hacer eso en una piscina

 const connection = mysql.createPool({ host: dotenv.parsed.DB_HOST, user: dotenv.parsed.DB_LOGIN, password: dotenv.parsed.DB_PASSWORD, database: dotenv.parsed.DB_NAME, charset: dotenv.parsed.DB_CHAR, multipleStatements: dotenv.parsed.DB_MULTI }); /** * @description gets the user's personnumber and password * @param {*} personnummer is the personal number issued by the Swedish government for the person in question */ async function getPat(personnummer) { let patient; (await connection).getConnection(function (err, connection) { if (err) throw err; connection.query("SELECT * FROM patient where personnummer=?", [personnummer], function (err, result) { if (err) throw err; patient = result; }); }); return patient; }

Lo que sucede en el código anterior está dentro de la conexión. función de consulta hay resultados, pero tan pronto como salimos de ella, los resultados están vacíos. Parece que no puedo entender cuál es la causa.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

De acuerdo con la documentación , mysql.createPool() devuelve un pool de forma síncrona, por lo que no es necesario esperar.

 // mysql.createPool() returns a pool synchronously const pool = mysql.createPool({ 'host': dotenv.parsed.DB_HOST, 'user': dotenv.parsed.DB_LOGIN, 'password': dotenv.parsed.DB_PASSWORD, 'database': dotenv.parsed.DB_NAME, 'charset': dotenv.parsed.DB_CHAR, 'multipleStatements': dotenv.parsed.DB_MULTI });

Lo que la documentación no le dice es cómo prometer pool.query() , y eso es lo que se está perdiendo.

Hay utilidades que prometen para usted, pero es bastante simple hacerlo manualmente.

 /** * @description returns a Promise that delivers the user's personnumber and password (or Error) * @param {*} personnummer is the personal number issued by the Swedish government for the person in question */ async function getPat(personnummer) { return new Promise((resolve, reject) => { pool.query("SELECT * FROM patient where personnummer=?", [personnummer], function (err, result) { if (err) { reject(err); } else { resolve(result); } }); }); }

Dado que getPat() devuelve Promise, la persona que llama debe usar la .then() o la sintaxis await para acceder al resultado.

about 4 years ago · Juan Pablo Isaza 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!