как определить асинхронную функцию в readline - PullRequest
0 голосов
/ 06 ноября 2018

Я написал асинхронную функцию в nodejs, которая возвращает значение запроса в моей базе данных. Я проверил этот запрос, и он работал. но моя проблема в определении readline. когда я запускаю этот код, я получаю сообщение об ошибке:

const a = await Movie.find({}).sort('-year').where('year').gt(X).lt(Y).sort('rank')
                  ^^^^^

SyntaxError: await is only valid in async function

как определить функцию readline как асинхронную функцию? это моя функция:

async function returnMoviesBetweenXandY(){

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

 rl.question('enter the first number : ', (X) => {
    rl.question('enter the second number : ', (Y) => {
        const a = await Movie.find({}).sort('-year').where('year').gt(X).lt(Y).sort('rank')
        const temp =await Promise.map(a, getTitle)
        return temp
        // rl.close();
    });
});
}

returnMoviesBetweenXandY().then(function(result){console.log(result)})

1 Ответ

0 голосов
/ 06 ноября 2018

Используйте ключевое слово async перед функциями (X) => и (Y) => в качестве лямбда-представления. Такие как:

rl.question('enter the first number : ', async (X) => {
rl.question('enter the second number : ', async (Y) => {
    const a = await Movie.find({}).sort('-year').where('year').gt(X).lt(Y).sort('rank')
    const temp =await Promise.map(a, getTitle)
    return temp
    // rl.close();
});

});

В основном, функция должна быть помечена async, если вы используете ключевое слово await в теле функции. В вашем случае вы используете ключевые слова await внутри лямбда-функций. Поэтому он должен быть помечен как async.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...