MongoDB查找不返回数组

我不确定我在这里缺少什么。我想在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();
  });
}
typingsoft2 回答:MongoDB查找不返回数组

client.connectasync函数,并接受回调。您无法在回调范围之外访问jobs变量。

为此,您可以将client.connect方法包装到一个函数中,并可以从那里返回promise。

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)
    });
  })
}
本文链接:https://www.f2er.com/3162362.html

大家都在问