我正在尝试从 MongoDB 集群检索所有文档。我遵循了我在网上看到的代码,但是我遇到了一个小问题。
const MongoClient = require('mongodb');
const uri = "mongodb+srv://<user>:<password>@cluster0-10soy.mongodb.net/test?retryWrites=true&w=majority";
var questionsArray = [];
MongoClient.connect(uri, function (err, client) {
const database = client.db("WhatSportWereYouMadeFor");
database.collection("Questions").find({}, (error, cursor) =>{
cursor.each(function(error, item){
if (item == null){
console.log(error);
}
questionsArray.push(item);
});
})
});
module.exports = { questionsArray };
我可以很好地连接到数据库,但是我在 stop 变量处设置了一个断点,并且在从数据库检索到的任何文档被推送到问题数组之前会被击中。 我还尝试将代码包装在异步函数中,然后在 stop 变量之前等待它,但该断点仍然首先被命中,并且仅在文档被推送到数组之后才被命中。
最佳答案
我会做什么,将整个事情包装成一个 promise ,然后导出。
const MyExport = () => {
return new Promise((resolve, reject) => {
var questionsArray = [];
MongoClient.connect(uri, function (err, client) {
const database = client.db("WhatSportWereYouMadeFor");
database.collection("Questions").find({}, (error, cursor) =>{
cursor.each(function(error, item){
if (item == null){
console.log(error);
}
questionsArray.push(item);
});
resolve(questionsArray)
})
});
})
}
module.exports.questionsArray = MyExport
但是当你导入它时,你需要运行并等待它
cosnt questionsArrayFunc = require("path/to/this/file").questionsArray
const questionsArray = await questionsArrayFunc()
我希望这就是您所寻找的。可能还有其他方法,但我认为这可行。
关于javascript - 检索 MongoDB 集群的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60893714/