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

210
Views
TypeError: no se puede leer la propiedad 'entonces' de undefined usando promesas

Estoy haciendo este sitio web como un proyecto que es una versión "Walmart" de AirBnB.

Esto es lo que se supone que debe hacer el botón para el contexto:

Un usuario hará clic en el botón "Hacer reserva" en una lista. Seleccionarán una fecha de inicio y finalización y luego la enviarán. Esto enviará una solicitud HTTP al servidor.

Sin embargo, me encuentro con un error donde devuelve:

TypeError: no se puede leer la propiedad 'entonces' de undefined en /vagrant/LightBnB/LightBnB_WEB_APP/server/apiRoutes.js:44:7 <--

La línea 44:7 es la ruta API a continuación:

Esto está causando el error:

 .then((reservation) => { res.send(reservation);

Esta es la lógica de RUTA API que está causando un problema:

 router.post('/reservations', (req, res) => { const userId = req.session.userId; database .addReservation({ ...req.body, guest_id: userId }) .then((reservation) => { res.send(reservation); }) .catch((e) => { console.error(e); res.send(e); }); });

Esa ruta está llamando a la función addReservation() que es la siguiente:

 /** * Add a reservation to the database * @param {{}} reservation An object containing all of the reservation details. * @return {Promise<{}>} A promise to the reservation. */ const addReservation = function (reservation) { const queryString = ` INSERT INTO reservations( start_date, end_date, property_id, guest_id ) VALUES ($1, $2, $3, $4) RETURNING * `; const values = [ reservation.start_date, reservation.end_date, reservation.property_id, reservation.guest_id, ]; pool .query(queryString, values) .then((res) => { res.rows; }) .catch((e) => console.log(e.message)); }; exports.addReservation = addReservation;

Por favor, hágamelo saber si necesita más información.

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

0

TypeError: no se puede leer la propiedad 'entonces' de indefinido

addReservation() no tiene valor de retorno, por lo que devuelve undefined . Entonces, cuando intentas hacer addReservation(...).then(...) , terminas intentando acceder a .then() en undefined , lo que da como resultado el error que obtienes.

Dentro de addReservation() , debe cambiar:

 pool.query(...).then(...).catch(...)

a

 return pool.query(...).then(...).catch(...)

Eso devuelve su promesa para que la persona que llama pueda usar .then() en la promesa devuelta.


Tenga en cuenta que su controlador .catch() en addReservation() está registrando y luego "comiendo" el error. Probablemente debería volver a generar el error para que la persona que llama pueda ver el error:

Cambia esto:

 .catch((e) => console.log(e.message));

a esto:

 .catch((e) => { console.log(e.message) // re-throw the error so it propagates to the caller throw e; });

Además, tenga en cuenta que res.send(e) probablemente no proporcione mucha información útil porque la mayoría de las propiedades del objeto Error no son enumerables y, por lo tanto, no aparecerán cuando res.send() convierta el objeto Error en JSON.

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!