Запрос почтальона работает, но я не могу заставить fetch () работать с тем же запросом и заголовками.Это сводит меня с ума.
Клиент:
fetch('http://localhost:1234/acts/create', {
method: 'POST',
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
body: JSON.stringify({
name: 'BARNEY MCGREW!',
rating: 90,
})
})
Экспресс:
exports.act_create = function (req, res) {
console.log(' req >>>>', req.body);
var act = new Act(
{
name: req.body.name,
rating: req.body.rating
}
);
// res.set('Content-Type', 'application/x-www-form-urlencoded');
act.save(function (err) {
if (err) {
return console.log(err);
}
res.send('Act Created successfully')
})
};
Это генерирует следующий вывод терминала:
req >>>> : [Object: null prototype] { '{"name":"IngleburtHumperdink","rating":10}': '' }
act is: { _id: 5c4245bea7bb511c20de6b7a }
Такэто вроде как проходит, но потом я получаю ValidationError: Act validation failed: name: Path
name is required., rating: Path "rating" is required.
То же самое для пути "name".
Так что, очевидно, изо всех сил пытается сопоставить строковый объект json с именем / рейтингомзначение приходит. Но удаление JSON.stringify из тела запроса POST дает мне req >>>> [Object: null prototype] { '[object Object]': '' }
Что я здесь не так делаю?
[иЕсть ли хорошие блоги, в которых четко объясняется, как передавать данные через тело, чтобы они были доступны через fetch()
без проблем?]