Почему я получаю сообщение об ошибке «Ошибка проверки сообщений», когда я отправляю сообщение в свой API?

#javascript #reactjs #mongodb #express

#javascript #reactjs #mongodb #экспресс

Вопрос:

У меня есть форма, в которой я хотел бы иметь возможность публиковать ее содержимое на моем сервере MongoDB, который я подключил к серверной части, однако, когда я публикую сообщение, я получаю сообщение об ошибке «Ошибка проверки сообщений: ошибка post: приведение к строке для значения «{}» в пути «post», и у меня естьпонятия не имею, почему. Я только начал с react, поэтому простите меня, если решение простое.

Это моя страница формы:

 import React from 'react';
import axios from 'axios';

export default class PostList extends React.Component {
    state = {
        post: '',
    }

    handleChange = event => {
        this.setState({ post: event.target.value });
    }

    handleSubmit = event => {
        event.preventDefault();

        const post = {
            post: this.state.name
        };

        axios.post('http://localhost:5000/posts', { post })
            .then(res => {
                console.log(res);
                console.log(res.data);
            })
    }

    render() {
        return (
            <div className="flex-container-home">
                <div className="app">
                    <form onSubmit={this.handleSubmit}>
                        <label>
                            Post:
                        <input type="text" name="post" onChange={this.handleChange} />
                        </label>
                        <button type="submit">Add</button>
                    </form>
                </div>
            </div>
        )
    }
}
  

Это мой маршрутизатор:

 const express = require("express")
const router = express.Router()
const Post = require('../models/posts')

router.post('/', async (req, res) => {
    const post = new Post({
        post: req.body.post,
    });
    try {
        const savedPost = await post.save()
        res.json(savedPost);
    } catch (err) {
        res.json({ message: err });
    }
})

module.exports = router;
  

Это моя схема:

 const mongoose = require('mongoose');


const PostSchema = mongoose.Schema({
    post: {
        type: String,
        required: true
    },
    date: {
        type: Date,
        default: Date.now
    }
})

module.exports = mongoose.model('Posts', PostSchema)
  

Комментарии:

1. Я не знаю, является ли это источником проблемы, но вам нужно передать параметр конфигурации в запрос post axios, например axios.post(url, data, config) , где config может быть определен как let config={headers:{"Content-Type":"application/json"}} .

2. Я только что добавил это, но моя проблема все еще существует. Спасибо, хотя @BlackMath

Ответ №1:

Заменить { post } на post , { post } даст

 {
   post: {
      post: this.state.name
   }
}
  

Ожидаемый может быть

 {
   post: this.state.name
}
  

Комментарии:

1. Я заменил его на это, но получил сообщение об ошибке «Ошибка проверки сообщений: требуется post: Path post «.

2. когда я использую postman, я могу правильно отправить сообщение в свою базу данных, поэтому я думаю, что оно получает его правильно. Извините, если я не отвечаю на ваш вопрос так, как вы намеревались

3. проверьте вкладку «Сеть» в браузере, какие данные она публикует

4. есть 2 сообщения. Первое сообщение, когда я нажимаю на него, говорит, что не удалось загрузить данные ответа. Второе сообщение гласит: » сообщение: {ошибки: {сообщение: {имя: «Ошибка проверки», сообщение: » post Требуется путь.»,…}},…}} »

5. Его ответ, проверьте тело вашего запроса