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

253
Visualizações
req.body está vacío, ¿por qué?

Quiero enviar algunos datos a mi base de datos MongoDB, pero en router.post mi req.body está vacío, si uso cosas que puse en mi función de envío en User(req.body) en lugar de req.body data a mi base de datos MongoDB correctamente.

Este es mi enrutador que uso, router.get . funciona bien, devuelve las tablas de la base de datos correctamente en la página /api :

 const router = require("express").Router(); const User = require("./model/models"); const parser = require("body-parser").json(); router.get("/", async (req, res) => { const data = await User.find({}); res.json(data); }); router.post("/",parser,async (req, res) => { console.log('1') console.log(req.body) console.log('2') parser.v await User(req.body).save(); res.json({"msg": "ok"}); }); module.exports = router

Este es mi código de archivo index.js :

 const bodyParser = require('body-parser'); const express = require('express'); const app = express(); const parser = require("body-parser").json(); var path = require('path'); app.use(express.urlencoded(true)); app.use(express.json()); app.use(parser); app.use('/',require("./routes/routes")) app.use(express.static(__dirname +'/public')) app.use("/api", require('./data/api')) app.listen(5000,function(){ console.log('server is alive') })

Esta es la función que uso para enviar datos:

 const btn1 = document.getElementById('btnEnter') let Login = "123" btn1.addEventListener('click' ,e=>{ send({newsTxT : "someTextHere",newsZag:"someZag",author:"SomeAuthor"}) }) const send = async(body) => { let res = await fetch("/api", { method: "post", header: { "Content-Type": "application/json", "Accept": "application/json" }, body: JSON.stringify(body) }); let data = await res.json(); console.log(data) }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Lo siguiente funcionó bien:

 const express = require("express") const app = express() const router = express.Router() router.use(express.json()) app.use(router) router.post('/api/user', function(req, res) { // ... }

Veo que la diferencia puede estar usando: app.use(router)

Tenga en cuenta que en el código anterior la declaración:

 router.use(express.json())

se puede reemplazar con (usando el body-parser ):

 const bodyParser = require('body-parser') router.use(bodyParser.json())

Esto funcionó bien con la versión express 4.17.1, body-parser versión 1.19.0 y NodeJS versión 12.18.3

about 4 years ago · Juan Pablo Isaza Relatório

0

Lo único extraño que veo es que está utilizando un json body-parser y también express.json() ambos técnicamente hacen lo mismo, pero body-parser está obsoleto, por lo que podría estar causando un error.

Además, no tiene que volver a importarlo en las rutas, colocar app.use(express.json()) en index.js hará que funcione para todos los puntos finales/rutas.

Vea cómo va este refactor:

 const router = require('express').Router() const User = require('./model/models') router.get('/', async (req, res) => { const data = await User.find({}) res.json(data) }) router.post('/', async (req, res) => { console.log('1') console.log(req.body) console.log('2') await User(req.body).save() res.json({ 'msg': 'ok' }) }) module.exports = router

índice.js

 const express = require('express') const app = express() var path = require('path') app.use(express.urlencoded(true)) app.use(express.json()) app.use('/', require('./routes/routes')) app.use(express.static(__dirname + '/public')) app.use('/api', require('./data/api')) app.listen(5000, function () { console.log('server is alive') })
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