【发布时间】:2019-05-05 10:24:16
【问题描述】:
我有一个控制器,它调用辅助函数来做一些工作,但唯一的问题是辅助函数在执行其逻辑之前过早返回。
我想要的是等待辅助函数完成其任务并返回结果。
当我这样做时,是否建议在控制器方法上使用异步,如下所示?
控制器:
async MoveItems(req, res, next) {
const data = req.body; // json
const total_items = data.length;
let status = 400;
let err_msg = "";
if (total_items == 0 || data.constructor != Array) {
err_msg = "Sorry, you must post/upload json";
} else {
for (let counter = 0; counter <= total_items - 1; counter++) {
// check the record now
const validItem = await Helpers.validateItem(
data[counter]
);
ValidItem is always now false if it is valid
if (!validItem) {
err_msg = `Invalid item found on row ${counter + 1}`;
break;
}
}
}
res.status(status).send({ detail: err_msg });
}
我的助手:
export default {
async validateItem(record) {
const ItemID = +record["ItemID"];
let response = false;
db.Item.findAll({
where: { ItemID },
limit: 1
})
.then(item => {
if (item.length === 1) {
response = true;
}
})
return response; // always false
}
};
【问题讨论】:
标签: javascript node.js