функция checkFamilyStatus()
продолжает возвращать неопределенное значение по какой-то причине, когда она должна возвращать логическое значение из коллекции mongodb.
Здесь немного контекста - я решил отделить часть logi c от методов маршрутизатора, таких как методы get и post, чтобы она выглядела чистой и понятной, как в функциональном программировании. Поэтому я поместил часть logi c в функции и вызвал их внутри методов маршрутизатора, но это не сработало. Кроме того, я не знаю, хорошая ли это практика или нет. Разве не было бы намного легче читать, если бы вы делали так, вместо того, чтобы поместить целый пакет кода в одном месте?
Я застрял на этом куске кода некоторое время. Я немного запутался в работе асинхронного 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 ?
});
};