【发布时间】:2019-12-27 05:37:29
【问题描述】:
我正在尝试重写我的代码以包含承诺。我知道 mongo 已经包含了 Promise,但我想先更多地了解 Promise。我不明白错误消息,因为我在 async 函数 中使用了 await。我发现this articles 似乎做了类似的事情,但我仍然无法让它工作。
我在这里做错了什么?
错误信息
SyntaxError: await 仅在异步函数中有效
代码
app.post('/search/word',urlencodedParser, async function(req, res){
try{
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
let dbo = db.db("words");
//Declare promise
let searchWord = function(){
return new Promise(function(resolve, reject){
dbo.collection("word").find({"$text": {"$search": req.body.word}})
.toArray(function(err, result) {
err ? reject(err) : resolve(result);
});
});
};
result = await searchWord();
db.close();
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify(result));
});
} catch(e) {
console.log(e);
}
});
【问题讨论】:
-
您有一个异步函数
async function(req, res),但await不在其中 - 您在回调function(err, db)中有await,它不是异步的。
标签: javascript asynchronous async-await