i'm trying post request using express on node.js , mongoose mongodb using postman data gives me error:
error
at mongooseerror.validationerror (c:\users\matteo\desktop\app1\node_modules\mongoose\lib\error\validation.js:22:16)
at model.document.invalidate (c:\users\matteo\desktop\app1\node_modules\mongoose\lib\document.js:1162:32)
at c:\users\matteo\desktop\app1\node_modules\mongoose\lib\document.js:1037:16
at validate (c:\users\matteo\desktop\app1\node_modules\mongoose\lib\schematype.js:651:7)
at c:\users\matteo\desktop\app1\node_modules\mongoose\lib\schematype.js:679:9
at array.foreach (native)
at schemastring.schematype.dovalidate (c:\users\matteo\desktop\app1\node_modules\mongoose\lib\schematype.js:656:19)
at c:\users\matteo\desktop\app1\node_modules\mongoose\lib\document.js:1035:9
at process._tickcallback (node.js:355:11)
i paste here server.js file
var express = require('express') var bodyparser = require('body-parser') var mongoose = require('mongoose'); var app = express() app.use(bodyparser.json()) mongoose.connect('mongodb://localhost/social', function(){ console.log('mongodb connected') }) var postschema = new mongoose.schema ({ username : { type: string, required: true }, body : { type: string, required: true }, date : { type: date, required: true, default: date.now} }) var post = mongoose.model('post', postschema) app.get('/api/posts', function(req, res, next){ post.find(function(err, posts){ if(err) { return next(err) } res.json(posts) }) }) app.post('/api/posts', function(req, res, next){ var post = new post({ username : req.body.username, body : req.body.body }) post.save(function(err, post){ if(err){ return next(err) } res.json(201, post) }) }) app.listen(3000, function(){ console.log('server listening on', 3000) }) can me or problem of mongoose?
i think it's mongoose validation issue, req.body json formatted-data, console.log(req.body.username) returns username value. general, try use req.body, please make use fill-out required fields upon submission.
app.post('/api/posts', function(req, res, next){ var post = new post(req.body); post.save(function(err, post){ if(err){ return next(err) } res.json(post) }) }) better handle mongooseerror.validationerror when user fails fill-in required fields. try review mongoose model.
Comments
Post a Comment