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