我刚开始使用NodeJ并处理异步功能。我尝试执行多个MongoDB调用,我需要等待所有这些调用完成才能进行下一步。 我总是收到我的会话已结束的错误,这使我发疯。 有人可以帮助我,说出我犯的错误吗?
function getDoc(dbo){
return new Promise((resolve, reject) => {
dbo.listCollections().toArray(function(err, collInfos) {
if (err){
reject(err);
} else {
resolve(collInfos.map(function(obj) {
return obj.name.toString();
}));
}
});
});
}
function findObj(dbo, name){
return new Promise((resolve) => {
dbo.collection(name).find({}).toArray(function(err, docs){
if (err){
console.log(err);
} else {
resolve({name: name, docs: docs});
}
});
});
}
async function getObj(dbo, collNames){
const promisses = [];
collNames.map((name) =>{
promisses.push(findObj(dbo, name));
});
return promisses;
}
async function getData(dbo){
try {
const arr = await getDoc(dbo);
const promisses = await getObj(dbo, arr);
Promise.all(promisses)
.then((response) => {
return (response);
})
.catch((error) => {
throw (error);
});
} catch (e) {
console.log(e);
throw e;
};
}
function getfromDB() {
MongoClient.connect(url, {useNewUrlParser: true, useUnifiedTopology: true}, function(err, db) {
if (err) throw err;
const dbo = db.db('tradingview');
getData(dbo).then((result) => {
console.log(result);
db.close();
}).catch((err) => {
console.log(err);
});
});
}
谢谢。