Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

250
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda