后的参数没有存储在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个问题:
-
放置
body-parser
的顺序非常重要,我在设置路由之后写了一行,所以不会parsing任何东西。- 我没有正确设置我的邮递员,它发送常规文本,而不是一个JSON对象。 捂脸