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

169
Visualizações
No capturado (en promesa) SyntaxError: final inesperado del error de entrada JSON

Esta es simplemente la función de agregar al carrito. También significa insertar campo en la base de datos. Todo está bien cuando se trata de agregar a la base de datos, sin embargo, aparece este error cada vez que hago clic en Agregar al carrito (pero aún se agrega a la base de datos).

 Uncaught (in promise) SyntaxError: Unexpected end of JSON input

Aquí está mi código de búsqueda, lo que lleva a llamar a mi controlador. No estoy seguro de qué datos json se devuelven aquí, como puede ver, estoy tratando de console.log (resultado), para poder tomar las medidas adecuadas si falla o no. Pero no obtengo ningún resultado, tal vez debido al error que recibo.

 function addToCart(productId){ fetch(`${rootUrl}api/users/addToCart/${productId}`,{ method: "PUT", headers:{ "Content-Type": "application/json", "Authorization": `Bearer ${token}` } }) .then(result =>result.json()) .then(result =>{ console.log(result); }) }

Y aquí está el controlador que inserta la identificación del producto en la base de datos:

 module.exports.addToCart = async (userId, isAdmin, productId) =>{ if (isAdmin === true) { console.log('Not an admin function'); }else{ const addToCartStatus = await User.findById(userId).then((user, error)=>{ user.cartItems.push({item: productId}); return user.save().then((result, error)=>{ if(error){ return false; }else{ return true; } }) }) }

No estoy tan familiarizado con las promesas y la sincronización, espere en javascript. En realidad, puede ver que puse async y await en el código de mi controlador aquí porque, antes de eso, ni siquiera puedo insertar nada en la base de datos. Agregué esos async y await, pero todavía no entiendo mucho cómo funcionan. Porque no los uso antes en ninguno de mis códigos con casi la misma estructura que el código del problema actual aquí. ¿Tal vez porque ahora tengo dos funciones de devolución de llamada aquí y eso no funciona igual que antes? (sin async y await).

Solo para señalar, solo quiero la salida primero de mi console.log (resultado).

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Veo algunas mejoras en su código que podrían resolver el problema:

En primer lugar, debe usar catch en su llamada de búsqueda y debe imprimir su resultado antes de analizarlo como json:

 function addToCart(productId){ fetch(`${rootUrl}api/users/addToCart/${productId}`,{ method: "PUT", headers:{ "Content-Type": "application/json", "Authorization": `Bearer ${token}` } }) .then(result => { console.log(result); return result.json(); }) .then(result =>{ console.log(result); }) .catch(e => console.log(e)); }

Con eso, debería poder obtener más información sobre el error.

Luego, en su método de back-end, está usando async/await mal:

 module.exports.addToCart = async (userId, isAdmin, productId) => { if (isAdmin !== true) { console.log('Not an admin function'); return; } try { const user = await User.findById(userId); user.cartItems.push({ item: productId }); const saveResult = await user.save(); return saveResult; } catch (e) { console.log(e); } };

No estoy seguro de qué desea devolver en su backend addToCart, pero creo que será fácil para usted devolver lo que desea.

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