我在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)})
答案 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
。