Я пытаюсь отправить объект внутри другого объекта из интерфейса React в Node / экспресс-сервер, используя jquery ajax. Проблема в том, что данные получены на бэкэнде, они больше не соответствуют синтаксису объекта. Вместо этого это выглядит примерно так:
{ 'data[name]': 'test name',
'data[size][height]': '123',
'data[size][weight]': '50' }
Вот внешний вызов ajax ...
lendItem(){
let id = "5af3348742afc60ab71d7d80"
$.ajax({
url: '/api/items/' + id,
method: 'put',
data: {
'data': {
name: "test name",
size: {
height: 123,
weight: 50
}
}
},
success: (res) => {console.log(res)}
});
}
бэкэнд-сервер ...
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
// connect to mongodb
mongoose.connect('mongodb://localhost/promedical');
mongoose.Promise = global.Promise;
const app = express();
const port = process.env.PORT || 5000;
// parsing data that was received
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// initialize routes
app.use('/api', require('./routes/api'));
// error handling
app.use((err, req, res, next)=>{
res.status(422).send({error: err.message});
});
app.listen(port, () => {
console.log(`Listening on port ${port}`)
});
... и вот интересующий меня маршрут.
router.put('/items/:id', (req, res, next)=>{
console.log(req.body);
res.send("success");
});
Я думаю, что эта проблема может иметь отношение к этому анализатору тела. Можно ли отправлять объекты внутри объекта через jquery ajax и сохранять его форму, как только он достигает бэкэнда? Если нет, я должен просто отправить все данные внутри одного объекта, а затем проанализировать их на бэкэнде?