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
{
name:"wewe",
price: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)
})
>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
, notapplication/json