2017-10-16 4 views
1

Je suis en boucle sur une collection d'utilisateurs dans le nœud en utilisant mongoose. Je veux enregistrer les données de chaque utilisateur dans un fichier Excel.Mongoose faire quelque chose après "model.findById" dans le nœud

Usr.findById(usrID, function(err, foundTagestipp){ 
     sheet1.set(1, counter, 'some Userdata'); 
    } 

Le problème est que je veux enregistrer le fichier après avoir traversé toute la collection.

Alors, quand est-ce que je sais quand le dernier utilisateur a terminé? Puis-je en quelque sorte donner à un rappel ou puis-je obtenir des informations de mangouste quand c'est fait?

je l'espère, il est clair ce que je voulais dire par là ... Désolé pour la question nooby

+0

double possible de [Comment exporter au format CSV collection dans MongoDB?] (Https://stackoverflow.com/questions/6814151/how-to-export-collection-to-csv-in-mongodb) – str

Répondre

1

vous pouvez envelopper chaque appel async à l'intérieur d'une promesse, recueillir une liste de promesses et de les résoudre en dehors de la boucle avec un appelez au Promise.all() puis exécutez votre logique métier.

let promises = []; 
myCollection.forEach(elem => { 
let promise = new Promise((resolve, reject) => { 
    Usr.findById(elem.usrID, function(err, foundTagestipp){ 
     if(err) { 
     return reject(err); 
     } 
     resolve({userId: elem.usrId, userData: foundTagestipp}) 
    } 
}) 
promises.push(promise); 
}) 

Promise.all(promises) 
.then(data => { 
    //here all the findById have already been called 
    //you can save your data to the csv 
})