我正在尝试重写我的代码以合并 promise 。我知道 mongo 已经包含了 promise ,但我想先多了解一下 promise 。我不明白错误消息,因为我在async 函数 中使用了await。我找到了 this articles这似乎是相似的,但我仍然无法让它工作。
我在这里做错了什么?
错误信息
语法错误: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);
}
});
最佳答案
回调函数需要异步
app.post('/search/word',urlencodedParser, async function(req, res){
try{
MongoClient.connect(url, { useNewUrlParser: true }, async 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);
}
});
关于javascript - await 只在异步函数中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59493631/