пост-параметры не хранятся в Mongo db

1

Я пытаюсь создать простой блог со стеком MEAN, и в настоящее время я настраиваю задний конец. Я тестирую свои маршруты с помощью Postman, и по какой-то причине я не могу сохранить заголовок и тело сообщения в БД.

Моя модель: 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 с сообщением, содержащим заголовок и тело, сохраняется пустое сообщение. Я получаю нечто подобное:

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

Любая помощь будет оценена по достоинству.

  • 0
    Что вы получите, когда у вас console.log(req.body) в верхней части пост-контроллера?
  • 0
    Хм, я становлюсь undefined . Похоже, в req.body ничего нет, когда я отправляю запрос на публикацию. Я надеюсь, что я толкаю это правильно в Почтальон :
Показать ещё 4 комментария

2 ответа

0

Я понял, 2 проблемы:

  1. Важным является порядок размещения body-parser, я написал строку после установки маршрутов, чтобы он не разбирал ничего.

    1. Я не настроил свой Почтальон правильно, он отправлял обычный текст вместо объекта JSON. Facepalm
0

Похоже, что Post не может получить тело вашего фактического поста. Вы можете заполнить свойство body по вашему запросу модулем body-parser. Сделайте npm install body-parser и добавьте это в свой код:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню