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

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

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 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