Вчера я сделал простой API, просто для тестирования. Там я мог сделать все, получить, опубликовать, удалить и исправить. Но сегодня я могу только получить и удалить. Когда я хочу сделать сообщение, я получаю сообщение об ошибке и не понимаю его, потому что вчера все работало нормально.
Сообщения
Пост 1
Вот мой пост:
router.post('/', async (req, res) => {
const post = new Post({
title: req.body.title,
description: req.body.description
});
try {
const savedPost = await post.save();
res.json(savedPost);
} catch (err) {
res.json({
message: err
});
}
});
Пост 2
Я сделал еще один пост, но это тоже не работает:
router.post('/', (req, res) => {
const postData = {
title: req.body.title,
description: req.body.description
}
Post.findOne({
title: req.body.title,
description: req.body.description
})
.then(post => {
if (!post) {
Post.create(postData);
res.json(postData);
}
})
.catch(err => {
res.send(err);
})
})
Error
Вот ошибка, которую я получаю:
TypeError: Cannot read property 'title' of undefined
at router.post (D:\Sonstiges\VUE_JS\rest_api\routes\posts.js:35:25)
at Layer.handle [as handle_request] (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\layer.js:95:5)
at next (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\layer.js:95:5)
at D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\index.js:281:22
at Function.process_params (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\index.js:335:12)
at next (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\index.js:275:10)
at Function.handle (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\index.js:174:3)
at router (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\index.js:47:12)
at Layer.handle [as handle_request] (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\index.js:317:13)
at D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\index.js:284:7
at Function.process_params (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\index.js:335:12)
at next (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\router\index.js:275:10)
at expressInit (D:\Sonstiges\VUE_JS\rest_api\node_modules\express\lib\middleware\init.js:40:5)
Схема
Так что это говорит, что название не определено. В моей модели я определил ее как строку:
const PostSchema = mongoose.Schema({
title: {
type: String,
required: true
},
description: {
type: String,
required: true
},
date: {
type: Date,
default: Date.now
}
});
Почтальон
В почтальоне я создаю сообщение с необработанным телом и типом JSON (application / json):
{
"title": "test",
"description": "this is a test"
}
Как я могу определить заголовок?
EDIT
Существует аналогичный вопрос в Stackoverflow. Я попробовал это решение, но у меня оно не сработало.