Проблема в том, что `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);
});
}
Таким образом, ваш код должен работать корректно. Теперь, когда вы отправляете данные с клиента, сервер сможет правильно обработать тело запроса и сохранить данные в базу данных.