簡體   English   中英

Mongodb 查找不返回數組

[英]Mongodb find doesn't return array

我不確定我在這里缺少什么。 我想在 Nodejs function 中查詢 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.connectasync的 function 並接受回調。 您無法訪問回調 scope 之外的jobs變量。

為此,您可以將client.connect方法包裝到 function 中,並可以從那里返回 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.w3schools.com/nodejs/nodejs_mongodb_find.asp
我希望它對你有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM