Javascript Mongodb find不';t返回数组

Javascript Mongodb find不';t返回数组,javascript,node.js,mongodb,asynchronous,promise,Javascript,Node.js,Mongodb,Asynchronous,Promise,我不确定我错过了什么。我想在Nodejs函数中查询MongoDB数据库。下面的jobs变量保持返回未定义。我希望它返回一个数组。如果在collection.find中运行console.log,它将输出我试图返回的数组 async function getDataFromMongoDB(page) { const MongoClient = require("mongodb").MongoClient; const uri = "mongodb://localhost:3001";

我不确定我错过了什么。我想在Nodejs函数中查询MongoDB数据库。下面的
jobs
变量保持返回未定义。我希望它返回一个数组。如果在
collection.find中运行console.log,它将输出我试图返回的数组

async function getDataFromMongoDB(page) {
  const MongoClient = require("mongodb").MongoClient;
  const uri = "mongodb://localhost:3001";
  const client = new MongoClient(uri, { useNewUrlParser: true });
  client.connect(async function(err) {
    console.log(5, err);
    const collection = client.db("meteor").collection("jobs");

    const jobs = await collection.find().toArray((err, items) => {
      return items;
    });
    console.log("jobs", jobs);

    // return jobs;
    // console.log(jobs);

    // perform actions on the collection object
    client.close();
  });
}

client.connect
async
函数并接受回调。您无法访问回调范围之外的
作业
变量

为此,您可以将
client.connect
方法包装到函数中,并从中返回承诺

async function getDataFromMongoDB(page) {
  const MongoClient = require("mongodb").MongoClient;
  const uri = "mongodb://localhost:3001";
  const client2 = new MongoClient(uri, { useNewUrlParser: true });
  const client = await connectToMongodb(client2)
  const collection = client.db("meteor").collection("jobs");
  const jobs = await collection.find().toArray();
  console.log("jobs", jobs);
}

connectToMongodb(client) {
  return new Promise((resolve, reject) => {
    client.connect(function(err) {
      return resolve(client)
    });
  })
}

尝试
const jobs=wait collection.find().toArray();console.log(jobs)
谢谢,@Subburaj可以工作,但我仍然无法从
客户端.connect中获取作业。