繁体   English   中英

Await 仅在异步函数中有效

[英]Await is only valid in async functions

我正在尝试重写我的代码以合并承诺。 我知道 mongo 已经包含了承诺,但我想先了解一下承诺。 我不明白错误消息,因为我在async 函数中使用了await 我发现这篇文章似乎做了类似的事情,但我仍然无法让它工作。

我在这里做错了什么?

错误信息

语法错误: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);
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM