后的参数没有存储在Mongo数据库中

我试图用一个MEAN堆栈来构build一个简单的博客,而且我正在设置后端。 我正在用邮递员testing我的路线,出于某种原因,我无法将post的标题和正文保存在数据库中。

我的模型: models/posts/db.js

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var PostSchema = new Schema ({ title: { type: String }, body: { type: String }, date: { type: Date, default: Date.now } }); module.exports = mongoose.model('Post', PostSchema); 

我的控制器: controllers/posts.index.js

 var base = process.env.PWD; var Post = require(base + '/models/posts/db.js') var createPost = function(req, res) { var post = new Post(req.body) post.save(function(err, post) { if(err) { res.sendStatus(500, err); } res.json(post); }) } var getPosts = function(req, res) { Post.find(function(err, posts) { if (err) { res.sendStatus(500, err); } res.json(posts); }) }; module.exports = { createPost, getPosts } 

这里是我在routes/index.js主要路线

 router.get('/posts', posts.getPosts); router.post('/posts/create', posts.createPost); module.exports = router; 

而我的主服务器正在使用一个/api端点:

 `app.use('/api', routes);` 

所以在Postman中,当我发送POST请求到/api/posts/create一个包含标题和正文的post时,一个空的post被存储。 我得到这样的插入:

 { "__v": 0, "_id": "5a29de91521f168eb9e1bcf2", "date": "2017-12-08T00:36:33.280Z" } 

任何帮助,将不胜感激。

它看起来像Post可能不会得到您的实际职位的身体。 您可以使用body-parser模块填充请求中的body属性。 做一个npm install body-parser ,并将其添加到您的代码:

 const bodyParser = require('body-parser') app.use(bodyParser.json()) 

我想通了,2个问题:

  1. 放置body-parser的顺序非常重要,我在设置路由之后写了一行,所以不会parsing任何东西。

    1. 我没有正确设置我的邮递员,它发送常规文本,而不是一个JSON对象。 捂脸