Я пытаюсь выполнить POST-запрос, но мой Сервер постоянно сообщает мне, что я не отправляю значения правильно?
Это проверяет наличие обязательных полей и возвращает ошибку, если она отсутствует, постоянно повторяет, что имя отсутствует в теле запроса.
Это на моем роутере:
router.post('/', jsonParser, (req, res) => {
const requiredFields = ['name', 'size', 'prices'];
for (let i = 0; i < requiredFields.length; i++) {
const field = requiredFields[i];
if (!(field in req.body)) {
const message = `Missing \`${field}\` in request body`;
console.error(message); // responds missing `name` in request body
return res.status(400).send(message);
}
}
StoredProduct.create({
name: req.body.name,
size: req.body.size,
prices: req.body.prices
}).then(item => {
res.status(201).json(item);
}).catch(err => {
console.log(err);
res.status(500).json({
error: err
});
});
});
И тогда это мой запрос AJAX:
$('#addItemButton').on('click', function() {
console.log($addProductName.val()); //works correctly
console.log($addProductUnit.val()); //works correctly
console.log($addPrice1.val()); //works correctly
console.log($addPrice2.val()); //works correctly
console.log($addPrice3.val()); //works correctly
var newProd = {
name: $addProductName.val(),
size: $addProductUnit.val(),
prices: [{
price: $addPrice1.val()
},
{
price: $addPrice2.val()
},
{
price: $addPrice3.val()
}
]
};
$.ajax({
type: 'POST',
url: '/storedproducts',
data: newProd,
success: function(newProd) {
console.log(`${newProd} created`);
},
error: function() {
alert(`didn't work item: ${newProd}`); // responds didn't work item: [object Object]
}
});
});
Ответ сервера - 400 (неверный запрос), и в журналах моего сервера он показывает "Missing
имя in request body