Actualmente estoy enfrentando un problema en mi aplicación de nodo.
al intentar usar middleware en una solicitud de publicación, el req.body se vuelve indefinido.
por ejemplo;
router.post('/newpost', ensureAuthenticated, createPost, upload.single('file'), async (req, res) =>{ console.log(req.body); } async function createPost(req, res, next){ console.log(req.body); next(); }cuando se ejecuta la función createPost, registra req.body como indefinido. pero cuando req.body se registra dentro del router.post, se define.
¿Es algo que me estoy perdiendo? o es esto simplemente no es posible de hacer.
También me aseguré de haber incluido bodyparser y haberlo inicializado antes de mis rutas.
bueno, acabo de probar y todo funciona bien, con mi sugerencia en el comentario
aquí está el contenido de mi prueba:
mi index.js
const express = require('express') const router = express.Router() const app = express() const PORT = process.env.PORT || 3002 app.use(express.json()) const createPost = (req, res, next) => { console.log('createPost', req.body) next() } router.post('/newpost', createPost, (req, res) => { console.log('/nextpost', req.body) res.json({ message: 'ok' }) }) app.use('/', router) app.listen(PORT, () => { console.log( `server ready at http://localhost:${PORT}` ) })y un archivo de cliente REST simple
@HOST = http://localhost:3002 POST {{HOST}}/newpost Content-Type: application/json { "fname": "Bruno", "lname": "Alexandre", "nick": "balexandre" }y el resultado es
❯ node .\index.js server ready at http://localhost:3002 createPost { fname: 'Bruno', lname: 'Alexandre', nick: 'balexandre' } /nextpost { fname: 'Bruno', lname: 'Alexandre', nick: 'balexandre' }y la respuesta de la llamada
HTTP/1.1 200 OK X-Powered-By: Express Content-Type: application/json; charset=utf-8 Content-Length: 16 ETag: W/"10-/VnJyQBB0+b7i4NY83P42KKVWsM" Date: Tue, 26 Jan 2021 19:59:21 GMT Connection: close { "message": "ok" }captura de pantalla (haga clic para ver la imagen completa)
asegúrese de pasar Content-Type: application/json en su solicitud POST , recuerde que le dijo a Express que quería que el cuerpo se analizara como .json() , así que asegúrese de que sepa que está pasando json como el cuerpo de la solicitud
un poco más de información... el req.body solo está undefined si no uso el analizador, como:
un repositorio de GitHub con solución funcional > https://github.com/balexandre/so65907925