Задать вопрос
Ответы пользователя по тегу Node.js
  • Почему не отправляются данные через axios?

    @HireHoffee
    Проблема в том, что `express` не может обработать тело запроса в формате JSON по умолчанию. Необходимо добавить middleware для парсинга JSON в express приложении. Это делается с помощью встроенного `express.json()` middleware.

    Вот как можно изменить index.js файл в корневой директории сервера, чтобы добавить поддержку для JSON:

    const express = require('express');
    
    const app = express();
    const cors = require('cors');
    const circularJSON = require('circular-json');
    const PORT = 3001;
    const routes = require('./routes/index')
    
    app.use(cors());
    
    // Добавить эту строку для парсинга JSON
    app.use(express.json());
    
    app.listen(PORT, () => {
        console.log('Сервер запущен на порту ' + PORT);
    })


    Эта строка `app.use(express.json());` добавляет middleware, которое парсит тело JSON-запросов и делает его доступным в `req.body`.

    Кроме того, убедитесь, что вы отправляете данные в правильном формате из клиента. В `axios` запросе данные должны быть объектом, а не строкой. Вот как должен выглядеть ваш `addCat` метод в `App.js`:

    function addCat() {
      axios({
        url: "http://localhost:3001/api/add/item",
        method: "POST",
        data: { name: name }  // Данные должны быть объектом
      })
      .then((response) => {
        console.log(response);
      })
      .catch((error) => {
        console.log(error);
      });
    }


    Таким образом, ваш код должен работать корректно. Теперь, когда вы отправляете данные с клиента, сервер сможет правильно обработать тело запроса и сохранить данные в базу данных.
    Ответ написан
    Комментировать