post params没有存储在Mongo db中

时间:2017-12-08 00:45:42

标签: javascript node.js mongodb

我正在尝试使用MEAN堆栈构建一个简单的博客,而我目前正在设置后端。我正在用邮递员测试我的路线,由于某种原因,我无法在数据库中保存帖子的标题和正文。

我的模特: 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中,当我向/api/posts/create发送一个包含标题和正文的帖子的POST请求时,会存储一个空帖子。我得到了这样的东西:

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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

看起来Post可能无法获得实际帖子的正文。您可以使用body模块填写请求中的body-parser媒体资源。执行npm install body-parser并将其添加到您的代码中:

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

答案 1 :(得分:0)

我明白了,2个问题:

  1. 您放置body-parser的位置非常重要,我在设置路线后写了这条线,所以它没有解析任何东西。

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