#javascript #node.js #express #multer
#javascript #node.js #выразить #мультер
Вопрос:
Я пытаюсь написать серверную часть для приложения для просмотра гурманов. Проблема, с которой я сталкиваюсь, заключается в PUT
методе, когда я пытаюсь изменить определенный post, req.body
не содержит imageUrl
, если я не изменяю URL. Когда req.file
существует (изображение), тогда все работает, потому что я настроил новый ImageUrl. По некоторым причинам я получаю userId
, description
и все остальное обратно, кроме imageUrl
.
Вот мой код:
exports.modifySauce = (req, res, next) => {
let sauce = new Sauce({ _id: req.params._id });
if (req.file) {
const url = req.protocol '://' req.get('host');
req.body.sauce = JSON.parse(req.body.sauce);
sauce = {
_id: req.params.id,
name: req.body.sauce.name,
manufacturer:req.body.sauce.manufacturer,
mainPepper:req.body.sauce.mainPepper,
description: req.body.sauce.description,
imageUrl: url '/images/' req.file.filename,
heat: req.body.sauce.heat,
userId: req.body.sauce.userId
};
} else {
sauce = {
_id: req.params.id,
name: req.body.name,
manufacturer:req.body.manufacturer,
mainPepper:req.body.mainPepper,
description: req.body.description,
imageUrl: req.body.imageUrl,
heat: req.body.heat,
userId: req.body.userId
};
}
Sauce.updateOne({_id: req.params.id}, sauce).then(
() => {
res.status(201).json({
message: 'Sauce updated successfully!'
});
}
).catch(
(error) => {
res.status(400).json({
error: error
});
}
);
};
Дополнительная информация в моем репозитории.
А вот и внешний репозиторий. https://github.com/OpenClassrooms-Student-Center/nem-stack-hot-takes
Комментарии:
1. Кажется, вы не передаете параметр ImageUrl вместе с вашим запросом PUT. Когда запрос. указан файл , вы получаете ImageUrl из req.file. имя файла , но в проблемном случае, когда запрос. файл не указан, вы получаете ImageUrl из req.body.ImageUrl . Дважды проверьте свой интерфейсный код или Postman и убедитесь, что вы указываете параметр ImageUrl в своем запросе PUT. А еще лучше, добавьте это в свой вопрос.
2. попробуйте это, откройте свой интерфейс, откройте элемент inpect нажатием f12 и зайдите в сети. обновите свой URL-адрес и выберите самый последний URL-адрес из сети, который будет вашим URL-адресом put. Теперь проверьте, присутствует ли там ImageUrl. Убедитесь, что регистры символов также совпадают