Я пытаюсь следовать коду на Udemy, за исключением того, что делаю свою версию проекта. После использования bcrypt и jwt я не могу публиковать сообщения в своем приложении. Я могу войти в систему нормально, но при попытке опубликовать что-то выдает ошибку 422.
Вот что меня застревает.
const twottSubmitHandler = async (event) => {
event.preventDefault();
try {
const formData = new FormData();
formData.append("title", formState.inputs.title.value);
formData.append("description", formState.inputs.description.value);
formData.append("creator", auth.userId);
await sendRequest("http://localhost:3001/api/twotts", "POST", formData, {
Authorization: "Bearer " + auth.token,
});
history.push("/");
} catch (err) {}
};
Это то, что вызывает ошибку в контроллере twotts,
const errors = validationResult(req);
if (!errors.isEmpty()) {
return next(new HttpError("Invalid input passed", 422));
}
const { title, description, creator } = req.body;
const createdTwott = new Twott({
title,
description,
creator,
});
Есть ли способ сделать так, чтобы она добавлялась с использованием JSON .stringify вместо используя FormData? Используя
try {
await sendRequest(
"http://localhost:3001/api/twotts",
"POST",
JSON.stringify({
title: formState.inputs.title.value,
description: formState.inputs.description.value,
creator: auth.userId,
}),
{ Authorization: "Bearer " + auth.token },
{ "Content-Type": "application/json" }
);
history.push("/");
} catch (err) {}
, я все равно получаю неверные данные. Если я помещу аргумент авторизации в другое место, у меня возникнут проблемы с аутентификацией.
ссылка на репо: https://github.com/preintercede/Twotter (с коммитами) на случай, если есть часть, которую я пропустил.