仅在查询成功后上载到AWS

时间:2018-09-27 03:34:27

标签: node.js rest express amazon-s3 api-design

如何在同一请求中查询数据库时与第三方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?
    })
})

感谢您的输入!

0 个答案:

没有答案