roovwhite
@roovwhite

Как получить результат выполнения callback?

Получаю данные из БД, но так как выполнение поиска данных User происходит синхронно, не получается просто вернуть результат выполнения колбэка в переменную. Подскажите, как можно решить эту проблему? Помогите разобраться.

let userRead = (userID) => {
    let userData;

    mongoose.connect(`${url}${database}`, optionsConnect);

    User.find({uid: userID}, (err, doc) => {
        mongoose.disconnect();

        userData = doc; // Данные из базы
    });

    return userData; // undefined
};
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
@Blockchain
Love js
Из-за того что mongoose асинхронный, doc запишутся в userData после того как ты ее return. Попробуй передать в функцию userRead 2 параметра: userID и функцию callback. И тогда вместо return можно будет просто вызвать функцию callback с параметром doc и вернуть ей данные.
Ну или просто создать Promise
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Coder321
let userRead = async (userID) => {

    mongoose.connect(`${url}${database}`, optionsConnect);

    return await User.find({ uid: userID }, (err, doc) => {
        mongoose.disconnect();
        return doc;
    });

};
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы