He estado tratando de usar la solicitud posterior para insertar datos en mongodb usando mongoose, sin embargo, veo que req.body se muestra como indefinido. el documento se inserta en la base de datos, sin embargo, solo se inserta la identificación del objeto predeterminado.
Así es como envío la solicitud al cartero
{ nombre:"wewe", precio:43}
//Post.js const mongoose = require('mongoose'); mongoose.connect("mongodb://localhost/tutorialkart"); const productSchema = mongoose.Schema({ name: String, price: Number }); module.exports = mongoose.model('Groduct', productSchema); //app.js var express = require('express') var bodyParser = require('body-parser') var Post = require('./Post') var app = express() app.use(bodyParser.json()) app.post('/api/posts', function (req, res, next) { var post = new Post({ name: req.body.name, price: req.body.price }) console.log("Log "+post.name ); post.save(function (err, post) { if (err) { return next(err) } res.json(201, post) }) }) app.listen(3000, function () { console.log('Server listening on', 3000) })Hay dos problemas con su solicitud en Postman (eliminó la captura de pantalla que mostraba estos problemas):
text/plain , no application/jsonAsí es como envío la solicitud al cartero
{ nombre:"wewe", precio:43}
Una de dos cosas está sucediendo:
Content-Type en la solicitud para que el middleware de análisis JSON que configuró no se active o¡Tienes que escribir JSON válido!
Puede probar su JSON con JSON Lint .
En particular, los nombres de propiedad en JSON deben ser cadenas y no pueden ser identificadores. Las cadenas en JSON deben estar delimitadas con " caracteres.
Su captura de pantalla no está visible/problemas para abrir la captura de pantalla. Tienes que ser más específico con tu pregunta.
Creo mongoose.connect("mongodb://localhost/tutorialkart"); aquí debe especificar el PUERTO localhost: 27017
Asegúrese de definir los nombres "nombre" y "precio" en su HTML/EJS y establecer su valor como los datos que está tratando de insertar en la base de datos.
Usar nuevo antes de mongoose.model, mongoose.Schema
app.use(bodyParser.json()) debe ser app.use(bodyParser.urlencoded({ extended: true }));