Почему мой REQ.body.ImageUrl не определен в методе PUT?

#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. Убедитесь, что регистры символов также совпадают