异步功能不等待并继续运行

时间:2020-03-28 11:40:25

标签: javascript node.js async-await

我正在尝试从MongoDB集群中检索所有文档。我一直在网上搜索并使用async / await关键字,并编写了以下代码

  [
    {
      "name": "John",
      "age": "25"
    },
    {
      "name": "Jack",
      "age": "20"
    }
  ]

根据我对异步/等待模式的了解,//Database connection const MongoClient = require('mongodb'); const uri = "mongodb+srv://user:password@cluster0-10soy.mongodb.net/test?retryWrites=true&w=majority"; async function GetQuestions() { MongoClient.connect(uri, async function (err, client) { const db = client.db("WhatSportWereYouMadeFor"); return await db.collection("Questions").find().toArray(); }); } async function main(){ let questions = await GetQuestions(); console.log(questions); } main(); 行仅应在console.log(questions)内部的返回值被击中后才被击中,但事实并非如此。

1 个答案:

答案 0 :(得分:2)

您应返回猫鼬结果的承诺:

const MongoClient = require('mongodb');
const uri = "mongodb+srv://user:password@cluster0-10soy.mongodb.net/test?retryWrites=true&w=majority";

async function GetQuestions() {
     return new Promise((resolve, reject) => {
         MongoClient.connect(uri, function (err, client) {
             const db = client.db("WhatSportWereYouMadeFor");
             resolve(db.collection("Questions").find().toArray());
         });
     });
}

async function main(){
    let questions = await GetQuestions();
    console.log(questions);
}

main();