Async - жду не работающий узел JS с Mongoose - PullRequest
0 голосов
/ 03 сентября 2018

Сравнение пароля по запросу пользователя. Использовали async и ждите , чтобы дождаться получения фактического ответа.

Я ожидаю, что он будет работать в следующем порядке 1,2,3,4 (заказ console.log)

но выполняется как 1, 3, 4, 2. Пожалуйста, помогите.

скрипт не ждет сравнить пароль

async login(request){
        let response =  await User.findOne({ email: request.email }, async (err, user) => {
            if (err) throw err;

            console.log('1');

            let isMatch =  await user.comparePassword(request.password, (err, isMatch) => {
                console.log('2');
                if (err) throw err;
                request.isMatch = isMatch;
            });

            console.log('3');
            return request;

        });

        console.log('4');
        console.log('response', response);
    }

1 Ответ

0 голосов
/ 03 сентября 2018

Если вы используете async / await, вы используете обещания, и вы не должны передавать обратный вызов методам мангусты. Если вы не сдадите один, они вернут обещание, что вы можете await. Вы ищете

async login(request){
    let response =  await User.findOne({ email: request.email });
    console.log('1');
    let isMatch =  await user.comparePassword(request.password);
    console.log('2');
    request.isMatch = isMatch;
    console.log('3');
    return request;
    console.log('4');
    console.log('response', response);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...