req.body is undefined – only default mongodb id is getting pushed

I have been trying to use post request to insert data to the mongodb using mongoose, however I see that req.body is being shown as undefined. document is getting inserted in database, however only default object id is getting inserted.

This is how I send request to Postman



const mongoose = require('mongoose');

const productSchema = mongoose.Schema({
    name: String,
    price: Number
module.exports = mongoose.model('Groduct', productSchema);


var express = require('express')
var bodyParser = require('body-parser')
var Post = require('./Post')

var app = express()
app.use(bodyParser.json())'/api/posts', function (req, res, next) {
    var post = new Post({
        price: req.body.price
    console.log("Log " ); (err, post) {
        if (err) { return next(err) }
        res.json(201, post)

app.listen(3000, function () {
    console.log('Server listening on', 3000)


>Solution :

There are two issues with your request in Postman (you removed the screenshot which showed these issues):

  • it’s not formatted as proper JSON, but as a Javascript object
  • you’re sending it as text/plain, not application/json

Leave a Reply