Функция asyn c не работает, не удается обновить и загрузить изображение - PullRequest
0 голосов
/ 06 мая 2020

Я работаю над функцией, где есть страница, запрашивающая у пользователя изображение профиля и некоторую информацию. до сих пор это то, что у меня есть

router.post('/edit/:id', async function(req, res) {
  let user
  const id = req.params.id
  try{
    user = await User.findById(id)
    user.firstname= req.user.firstname,
    user.lastname= req.user.lastname,
    user.religion= req.user.religion,
    user.education= req.user.education,
    user.language= req.user.language,
    user.lookingfor=req.body.lookingfor,
    user.preferEdu=req.user.preferEdu,
    user.preferReligion= req.user.preferReligion,
    user.bio= req.user.bio
    if (req.file != null && req.file !== '') {
      await upload(req, res, (err) => {
        if(err){
          console.log(err)
         } else {
           if(req.file == undefined){
             console.log('no file')
           } else {
             console.log(req.file)
            User.findByIdAndUpdate({_id: id}, {$set: {
               imageurl: req.file.location
             }}, {new: true}, (err, result) => {
               res.redirect('/dashboard')
             })
           }
         }
      })
    }

  } catch{
    if (user != null) {
      console.log ('no user')
    } else {
      res.redirect('/dashboard')
    }

  }

})

страница просто возвращается к '/ dashboard' без сохранения чего-либо

, прежде чем у меня будет функция, которая просто обрабатывает загружаемые изображения, и это было успешно

router.post('/edit/:id', function(req, res) {
  const id = req.params.id
    upload(req, res, (err) => {
    if(err){
     console.log(err)
    } else {
      if(req.file == undefined){
        console.log('no file')
      } else {
        console.log(req.file)
       User.findByIdAndUpdate({_id: id}, {$set: {
          imageurl: req.file.location
        }}, {new: true}, (err, result) => {
          res.redirect('/dashboard')
        })


      }
    }
  });
});

Я вижу, что изображение было загружено на amazon s3, а req.file.location был зарегистрирован в консоли. но он не был сохранен в моей базе данных mon go. любая помощь будет оценена по достоинству! спасибо

1 Ответ

0 голосов
/ 06 мая 2020

вы должны использовать заглавную букву «l» для местоположения. Вам следует переключить строку req.file.location на req.file.Location. S3 возвращает json с ключами с заглавной буквой в качестве инициалов.

Надеюсь, это поможет! дайте мне знать, если это сработает!

...