javascript - 将承诺链转换为异步等待
问题描述
我想将承诺转换为异步等待,但我无法找到正确的方法来确保每个调用都有效。
我正在尝试在删除用户时从 mongodb 集合和 s3 存储桶中删除与用户相关的所有数据。
这段代码是由其他人编写的,我正在尝试将其重构为更易读和更有效的状态。
"use strict";
const deleteById = require("./logic/deleteById");
const deleteFootPrint = require("./logic/deleteFootPrint");
const fileUpload = require("../../helpers/fileUpload");
const deleteDocuments = require("./logic/deleteDocuments");
const deleteAssignments = require("./logic/deleteAssignments");
const deleteQueries = require("./logic/deleteQueries");
const deleteStudyProgress = require("./logic/deleteStudyProgress");
module.exports = (config, services, models) => {
return (req, res, next) => {
return deleteById(models, req.params)
.then((user) => {
return deleteFootPrint(models, req.params)
.then(() => {
if (!user["profile_key"]) {
res.status(200).json({ success: true });
} else {
console.log(user["profile_key"]);
fileUpload
.deleteProfilePicture(user.profile_key, services.s3, config)
.then(() => {
fileUpload
.deleteUserDocuments(user.profile_key, services.s3, config)
.then(() => {
fileUpload.deleteUserAssignments(
user.profile_key,
services.s3,
config
);
});
})
.catch((err) => {
next(err);
});
}
})
.then(() => {
return deleteDocuments(models, req.params).then(() => {
return deleteAssignments(models, req.params).then(() => {
return deleteQueries(models, req.params).then(() => {
return deleteStudyProgress(models, req.params)
.then((results) => {
res.status(200).json({ success: true });
})
.catch((err) => {
next(err);
});
});
});
});
})
.catch((err) => {
next(err);
});
})
.catch((err) => {
next(err);
});
};
};
解决方案
像这样的东西...
module.exports = (config, services, models) => {
return async (req, res, next) => {
const user = await
deleteById(models,
req.params)
await deleteFootPrint(models,
req.params)
And so on...
推荐阅读
- javascript - React Hooks : UseRef not recognizing Event from Material UI Select
- html - How to make a border around clip path shape?
- opencv - 图像配准和焦点堆叠
- angular - ngoninit 不适用于动态组件
- python - Assign a value to a button in tkinter
- c# - 在 VS 2019 中使用 Span 会产生异常
- java - Invoking java chaincode from another java chaincode
- opengl - OpenGL 2D 批量渲染:当有多个活动纹理时,纹理一起出现故障
- alexa - 如何在 Alexa 卡中显示按钮
- intellisense - 您如何查看重载 Visual Studio Mac 2019