ошибка проверки post: заголовок: путь `title` требуется в API с nodejs

#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. Сделайте весь импорт поверх файла… Убедитесь, что вы правильно используете синтаксический анализатор тела.