#javascript #node.js #api
#javascript #node.js #API
Вопрос:
// Creatin& one
router.post('/', async (req, res) =&&t; {
const post = new Post({
title: req.body.title,
cate&ory: req.body.cate&ory,
content: req.body.content,
author: req.body.author,
postDate: req.body.postdate,
postTa&s: req.body.postta&s
})
try {
const newPost = await post.save()
res.status(201).json(newPost)
} catch (err) {
res.status(400).json({ messa&e: err.messa&e })
}
})
Я работаю с сервером API в node, но после запроса вызова POS со стороны клиента ответ
ошибка проверки post: требуется заголовок: Путь title
.
модель для MondoDB такова
const mon&oose = require('mon&oose')
const postSchema = new mon&oose.Schema({
title: {
type: Strin&,
required: true
},
cate&ory:{
type: Strin&,
required : true
},
content: {
type: Strin&,
required: true
},
author :{
type : Strin&,
required : true
},
postDate: {
type: Date,
required: true,
default: Date.now
},
postTa&s : {
type : Array,
default : ["Codin&"]
}
})
module.exports = mon&oose.model('post', postSchema)
Ответ №1:
Учитывая, что вы используете express. Это передается в основной файл после инициализации приложения. Чтобы ваше приложение могло анализировать данные из json, который оно получает от интерфейса.
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
Ответ №2:
Если вы не используете синтаксический анализатор тела, вы не сможете получить доступ к этим данным. Поэтому, пожалуйста, проверьте это.
Для тех, у кого не установлен анализатор тела, выполните следующие действия.
Запустите это общее на терминале / cmd по корневому пути проекта (установка синтаксического анализатора тела)
npm i body-parser
Импортируйте bodyParser в основной файл
var bodyParser = require('body-parser');
Используйте промежуточный провод ( выбирайте только тот, который подходит вам, в зависимости от типа данных, которые вы передаете в POST-запрос)
a. router.use(bodyParser.json({ type: 'application/* json' })); // parse various different custom JSON types as JSON
b. router.use(bodyParser.raw({ type: 'application/vnd.custom-type' })); // parse some custom thin& into a Buffer
c. router.use(bodyParser.text({ type: 'text/html' })); // parse an HTML body into a strin&
Также выполните импорт, описанный выше
// Creatin& one
router.post('/', async (req, res) =&&t; {
const post = new Post({
title: req.body.title,
cate&ory: req.body.cate&ory,
content: req.body.content,
author: req.body.author,
postDate: req.body.postdate,
postTa&s: req.body.postta&s
})
try {
const newPost = await post.save()
res.status(201).json(newPost)
} catch (err) {
res.status(400).json({ messa&e: err.messa&e })
}
})
Подробнее о синтаксическом анализаторе тела : https://www.npmjs.com/packa&e/body-parser
Комментарии:
1. где, куда я должен их импортировать
2. Сделайте весь импорт поверх файла… Убедитесь, что вы правильно используете синтаксический анализатор тела.