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

187
Views
NodeJs: Promise siempre devuelve indefinido

Así que tengo la siguiente promesa que se supone que va dentro de mi base de datos sqlite y me dice si hay una coincidencia. Incluso si las variables son correctas, siempre devuelve indefinido.

 var checkLoanable = function(bookID){ return new Promise((resolve, reject)=>{ db.run('SELECT * FROM book WHERE id=?',[bookID],(err,row)=>{ if (err) { console.log("error") reject(); } if(row){ if(row.loanable==0){ console.log("not loanable") reject(); } console.log("success") resolve(row); }else{ console.log("undefined") reject(); } console.log("End of promise") }); }) }

Esta es la llamada de la función.

 await checkLoanable(bookID) .then(()=>{console.log("success")}) .catch(()=>{ res.status(422) .setHeader('content-type', 'application/json') .send({ message: "Failed to add loan: book is not loanable!"}); }); console.log("after promise");

La espera está dentro de una función asíncrona y después de las pruebas que hice, espera a que finalice la promesa y luego continúa con el código. Sin embargo, no puedo entender por qué siempre está indefinido. Gracias de antemano por cualquier ayuda.

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

0

run() se usa para insertar y actualizar filas.

Para obtener una sola fila, use db.get() .

 db.get('SELECT * FROM book WHERE id=?', [bookID] , (err,row) => { });

Al menos si está utilizando el paquete npm/sqlite .

about 4 years ago · Juan Pablo Isaza Report

0

No mezcle async/await y Promise chain use uno de ellos.

Ya sea con intentar... atrapar o Promise..then..catch ... entonces... atrapar

 try { const book = await checkLoanable(bookID); res.json(book); }catch ({message}) { res.status(422).send(message); } // or checkLoanable(bookID) .then((book) => {res.json(book);}) .catch(({message}) => { res.status(422).json({ message: "Failed to add loan: book is not loanable!" }); });

Para el ejemplo, si usa algo como esto

 const myPromise = () => new Promise((resolve, reject) => { setTimeout(() => { resolve('Success!'); }, 1000); }); (async () => { const result = await myPromise().then(data => { console.log({data}); }); console.log({result}); })();

El resultado sería

 {data: 'Success!'} {result: undefined}

No ambos obtienen valores al mismo tiempo.

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!