我不确定我在这里遗漏了什么。我想在 Nodejs 函数中查询 MongoDB 数据库。下面的 jobs
变量一直返回 undefined。我期待它返回一个数组。如果我在 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
函数并接受回调。您不能在回调范围之外访问 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)
});
})
}
关于javascript - Mongodb 查找不返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58704367/