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

245
Views
Promesa que no devuelve nada

Estoy tratando de usar la clase de transacción del paquete mssql de nodejs. Entonces, mientras leía en http://www.dotnetcurry.com/nodejs/1238/connect-sql-server-nodejs-mssql-package , hice lo siguiente:

 Db.prototype.transaction = function() { return new Promise((resolve, reject) => { pool.connect().then(conn => { let transaction = new mssql.Transaction(conn).begin().then(() => { new mssql.Request(transaction).query("SELECT * FROM ParkingSlot").then(() => { transaction.commit().then((recordset) => { conn.close(); resolve(recordset); }).catch(reject) }).catch(reject); }).catch(reject) }); }); };

En la función de llamada, hice db.transaction().then(console.dir); para generar cualquier resultado en una consola. Pero no pasa nada.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Es porque alguna función de mssql que usé en las cadenas no devolvió nada, por lo que cuando la promesa está pendiente, funcionará sin nada, como se puede ver en la cadena catch en la llamada principal.

En segundo lugar, para usar mssql de nodejs con transacciones, la conexión debe estar siempre abierta (en mi caso, en el constructor) y solo tengo que lidiar con transacciones.

Finalmente, no tengo que crear mi solicitud o transacción con un nuevo objeto. La nueva instancia puede ser recuperada por ConnectionPool::transaction o ConnectionPool::Request

Así que aquí está el código final:

 transaction(q) { return new Promise((resolve, reject) => { let t = connexion.transaction() t.begin().then(() => { let r = t.request(); r.query(q).then((recordset) => { //console.log(recordset) t.commit().then((re) => { conn.close(); }).catch(reject); resolve(recordset); }) }); }); }

Tenga en cuenta que la sintaxis del código es diferente, porque paso la sintaxis de clase ES6, mejor legible.

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!