es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El envío de solicitud de Postman muestra un JSON vacío.

Realizar una petición para probar la conexión a MongoDB da como resultado un objeto vacío. He estado buscando y pienso que mi archivo test.http está siendo interpretado como texto y no como json… pero estoy utilizando app.use(express.json()) para el análisis por lo que estoy un poco confundido.

¿Alguna idea?

Archivos a continuación:

index.js

const express = require(‘express’)
const app = express()
const mongoose = require(‘mongoose’)
const dotenv = require(‘dotenv’)
const routesUrls = require(‘./routes/routes’)
const cors = require(‘cors’)

dotenv.config()

mongoose.connect(process.env.DATABASE_ACCESS, () => console.log(“DB conectado”))

app.use(express.json())
app.use(cors())
app.use(‘/app’, routesUrls)
app.listen(4000, () => console.log(“El servidor está corriendo”))
routes.js

const express = require(‘express’)
const router = express.Router()
const newPlayersTemplateCopy = require(‘../models/newPlayers’)

router.post(‘/newplayers’, (request, response) =>{
const newPlayers = new newPlayersTemplateCopy({
playerA:request.body.playerA,
playerB:request.body.playerB,
playerC:request.body.playerC,
playerD:request.body.playerD
})
newPlayers.save()
.then(data =>{
response.json(data)
console.log(“Petición enviada exitosamente”)
})
.catch(error => {
response.json(error)
console.log(“Petición fallida”)
})
})

module.exports = router

newPlayers.js (modelo)

const mongoose = require(‘mongoose’)

const newPlayersTemplate = new mongoose.Schema ({
playerA:{
type:String,
required:true
},
playerB:{
type:String,
required:true
},
playerC:{
type:String,
required:true
},
playerD:{
type:String,
required:true
},
date:{
type:Date,
default:Date.now
}
})

module.exports = mongoose.model(‘tabla de jugador’, newPlayersTemplate )

test.http

POST http://localhost:4000/app/newplayers
Content-Type: application/json

{
“playerA”:”Goku”,
“playerB”:”Chichi”,
“playerC”:”Vegeta”,
“playerD”:”Bulma”
}

Respuesta

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=utf-8
Content-Length: 2
ETag: W/”2-vyGp6PvFo4RvsFtPoIWeCReyIC8″
Date: Tue, 30 Nov 2021 22:54:58 GMT
Connection: close

{}

ACTUALIZACIÓN, corriendo console.log(newPlayers) y console.log(“request body”, JSON.stringify(request.body, null, 2)) da como resultado estos objetos:

console.log(newPlayers)

{
playerA: ‘Goku’,
playerB: ‘Chichi’,
playerC: ‘Vegeta’,
playerD: ‘Bulma’,
_id: new ObjectId(“61a7b964229ac0dd680909aa”),
date: 2021-12-01T18:05:24.968Z
}

console.log(“request body”, JSON.stringify(request.body, null, 2))

request body {
“playerA”: “Goku”,
“playerB”: “Chichi”,
“playerC”: “Vegeta”,
“playerD”: “Bulma”
}

ACTUALIZACIÓN: aquí está mi archivo package.json en caso de que ayude.

{
“name”: “server”,
“version”: “1.0.0”,
“description”: “Game Tracker”,
“main”: “index.js”,
“scripts”: {
“start”: “nodemon index.js”
},
“author”: “”,
“license”: “ISC”,
“dependencies”: {
“body-parser”: “^1.19.0”,
“cors”: “^2.8.5”,
“dotenv”: “^10.0.0”,
“express”: “^4.17.1”,
“mongoose”: “^6.0.14”,
“nodemon”: “^2.0.15”
}
}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que su servidor está funcionando correctamente, por lo que el problema podría estar en su solicitud de prueba. Ha incluido el encabezado Content-Type en su solicitud como application/json, por lo que debería ser analizado como JSON en el lado del servidor. Sin embargo, está viendo un objeto vacío en la respuesta.

    Ya ha comprobado que está utilizando app.use(express.json ()), lo que debería habilitar el análisis JSON. Una cosa que puede probar es registrar el objeto request.body en su ruta para verificar si los datos se están analizando correctamente. Puede agregar la siguiente línea antes de la inicialización de newPlayersTemplateCopy:

    console.log(request.body);

    Esto imprimirá el contenido del JSON analizado de su solicitud en la consola.

    Otra posibilidad es que su solicitud de prueba no se esté enviando correctamente. Está utilizando test.http para enviar la solicitud, lo que parece ser un archivo utilizado por una extensión de VS Code. Asegúrese de que la extensión esté enviando realmente la solicitud y de que haya guardado el archivo antes de enviar la solicitud.

    En cualquier caso, vale la pena revisar la salida de la consola en busca de errores o advertencias que puedan señalar la causa del problema.

Comments are closed.