【发布时间】:2020-07-16 15:53:01
【问题描述】:
function checkFamilyStatus() 出于某种原因一直返回 undefined,当它应该从 mongodb 集合中返回一个布尔值时。
这里有一点上下文 - 我决定将逻辑部分与路由器方法(如 get 和 post 方法)分开,以使其看起来像函数式编程一样清晰易懂。所以我把逻辑部分放在函数中,并在路由器方法中调用它们,但没有成功。此外,我不知道这是否是一个好习惯。如果这样做不是更容易阅读,而不是说将一大堆代码放在一个地方吗?
我已经被这段代码困住了一段时间。我对整个异步 JS 的工作感到有些困惑。我做了一些研究,但仍然不明白为什么这不起作用。有人可以为我澄清一下吗?
// post method
router.post("/create", ensureAuthenticated, async(req, res) => {
let userID = req.user.id;
console.log(await checkFamilyStatus(userID)); // but returns undefined
// rest of the code
}
// check family status
checkFamilyStatus = async userID => {
Account.findOne({
_id: userID
}, (err, account) => {
return account.hasFamily; // should return boolean value ?
});
};
【问题讨论】:
-
post 方法不应该等到 checkFamilyStatus() 完成吗?直到它返回承诺?
标签: node.js express asynchronous mongoose async-await