Как можно взаимодействовать со сторонним API при запросе базы данных в том же запросе?
Например, я использую Multer / Multer-S3 для загрузки файлов в AWS, а затем при успешном выполнении.загрузка Я хотел бы обновить пользователя, скажем, например, его аватар.
Если загрузка прошла успешно, это здорово, но что произойдет, если пользовательский запрос не удастся?Было бы лучше связать это с тем, что происходит, и забыть об этом?Или должна быть какая-то логика, которая возвращает и удаляет этот загруженный файл при неудачном запросе пользователя?
Вот пример:
router.post('/someRoute', (req, res, next) => {
multerUpload(req, res, (err) => {
if(err) {
throw new Error(err.message)
}
})
// File successfully uploaded to AWS.
User.findOneAndUpdate({_id: someId}, {avatar: fileName})
.then(user => {
// user successfully updated
})
.catch(err => {
// User update failed, but the file still uploaded to AWS.
// Is there any way to mitigate this?
})
})
Спасибо за любой ввод!