如何在readline中定义异步功能

时间:2018-11-06 20:09:03

标签: node.js asynchronous mongoose

我在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 :(得分:0)

async(X) =>用作lambda表示形式之前,请使用(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。就您而言,您在lambda函数中使用了await关键字。因此,应将其标记为async