Tengo un script del lado del cliente ejecutándose para enviar la cadena "Y" al servidor. Configuré un archivo console.log en el lado del cliente (que puedes ver a continuación) y otro en el lado del servidor. El del lado del cliente funciona, pero el que registra un objeto "vacío"... simplemente muestra "{}". ¿Cómo hago para que mis datos permanezcan en el objeto?
const status = "Y"; const options = { method: 'POST', headers: { 'Content-type': 'application/json' }, body: status fetch('/events/<%- event.id %>/prompt', options) console.log(options.body)Aquí está mi ruta para el contexto:
router.route('events/:id/prompt') .get(catchAsync(events.showPrompt)) .post(catchAsync(events.checkIn))Y mi controlador:
module.exports.checkIn = async(req, res) => { console.log(req.body); }¿Cómo consigo que el objeto llegue al servidor?
Para enviar "y" como contenido y recibirlo en Express, necesita dos cosas:
Debe asegurarse de que el content-type esté configurado en text/plain en la solicitud.
Necesita el middleware apropiado que leerá ese text/plain cuerpo sin formato.
app.use(express.text())
Luego, encontrará el cuerpo en req.body dentro de cualquier controlador de solicitud expresa registrado después del middleware anterior.
También puede elegir diferentes tipos de contenido, como application/json , el middleware correspondiente para ese content-type app.use(express.json())` y luego formatear los datos del cuerpo en ese formato.
Es importante darse cuenta de que Express no lee por sí mismo el cuerpo de una solicitud entrante. Lee los encabezados, pero no el cuerpo por defecto. Si desea que se lea el cuerpo, entonces necesita un middleware que busque cualquier content-type que tenga la solicitud entrante, lea el cuerpo, lo analice desde cualquier formato y coloque los datos analizados resultantes en req.body . Express viene con una serie de middleware incorporados para tipos de contenido populares.
El estado es una cadena. Sin embargo, el cuerpo debe tomar un objeto con un par clave-valor. Si envía como con como a continuación, obtendrá un objeto que contiene el estado en el lado del backend.
body: {status: status}Problema de: