Загружать в AWS только в случае успешного запроса - PullRequest
0 голосов
/ 27 сентября 2018

Как можно взаимодействовать со сторонним 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?
    })
})

Спасибо за любой ввод!

...