Я пытаюсь получить булевое значение из
async
функции, которая имеет в себе вложенную анонимную
async
функцию. Наверное, в коде будет понятнее:
async userExistsInDB(email) {
let userExists;
await MongoClient.connect('mongodb://127.0.0.1:27017/notificator', async(err, db) => {
if (err) throw err;
let collection = db.collection('users');
userExists = await collection.find({email: email}).limit(1).count() > 0;
console.log("INSIDE:\n", userExists);
db.close();
});
console.log("OUTSIDE:\n", userExists);
return userExists;
}
Сама функция находится внутри класса, в котором есть еще одна функция, которая вызывает
userExistsInDB:
async getValidationErrors(formData) {
let userExists = await this.userExistsInDB(formData.email);
console.log("ANOTHER FUNC:\n", userExists);
}
Если я запускаю функцию
getValidationErrors, то получаю на консоль следующий вывод:
OUTSIDE:
undefined
ANOTHER FUNC:
undefined
INSIDE:
true
хотя ожидается, что, при использовании
await, первым выведется
INSIDE: true
По сути, мне просто нужно достать значение переменной
userExists из вложенного асинхронного вызова в функции
userExistsInDB() и вернуть его. Но, почему-то не могу понять, что делаю не так.
Надеюсь, мне кто-нибудь сможет помочь