Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

346
Vistas
¿Cómo enviar y recibir formData a través de fetch to node y express?

Estoy tratando de enviar formData a través de la API de recuperación a una aplicación de nodo/express, y uso esos datos para actualizar una base de datos. No puedo acceder a formData en node. Si alguien pudiera señalar amablemente lo que estoy haciendo mal? He seguido varias otras respuestas pero ninguna ha ayudado.

Estoy usando javascript para adjuntar un detector de eventos al botón de envío y luego acceder a la API de búsqueda. El siguiente código da como resultado un req.body vacío.

Mi formulario html:

 <form action="" method="POST" name="editQuestionForm" id="editQuestionForm" class="inputForm" > <input type="text" id="editInputQuestion" name="question" value="" class="formInput" placeholder="Question" /> <textarea type="text" id="editInputAnswer" name="answer" value="" class="formInput" placeholder="Answer" ></textarea> <button id="editQuestionBtn" class="button" type="Submit"> Edit Question </button> </form>

Mi javascript:

 const editQuestionForm = document.getElementById("editQuestionForm"); const editQuestionBtn = document.querySelector("#editQuestionBtn"); editQuestionBtn.addEventListener("click", function (e) { id = e.target.getAttribute("data-id"); updateQuestion(e, id); }); async function updateQuestion(e, id) { e.preventDefault(); var formData = new FormData(editQuestionForm); dataToSend = Object.fromEntries(formData); await fetch(`/dbControl/editQuestion?id=${id}`, { method: "POST", body: JSON.stringify(dataToSend), }); }

Mi punto final en mi aplicación de nodo/express:

 router.post("/editQuestion", function (req, res) { try { console.log(req.body); } catch (err) { console.log(err); } finally { res.end(); } });
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tipo de contenido

No está enviando un objeto FormData. Estás enviando JSON.

Está pasando una cadena a la propiedad del body , por lo que debe decir explícitamente que está enviando JSON. fetch no puede inferir que su cadena es JSON.

Este paso no sería necesario si estuviera enviando datos de formulario de varias partes pasando un objeto FormData, ni si estuviera enviando datos codificados en URL pasando un objeto URLSearchParams. fetch puede inferir el tipo de contenido de esos objetos.

 await fetch(`/dbControl/editQuestion?id=${id}`, { method: "POST", body: JSON.stringify(dataToSend), headers: { "Content-Type": "application/json" } });

Middleware de análisis corporal

Según la documentación :

Contiene pares clave-valor de datos enviados en el cuerpo de la solicitud. De forma predeterminada, no está definido y se completa cuando usa un middleware de análisis del cuerpo, como express.json() o express.urlencoded().

… necesita incluir algún middleware de análisis de cuerpo.

 app.use(express.json());

(Y hágalo antes de registrar el controlador de punto final).

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda