Я только что начал с 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);
});
});
}
Заранее спасибо.