node.js async.eachSeries l'appel final de rappel trop tôt

C'est ce que je veux: j'ai un grand tableau intitulé résultats. Chaque élément de ce tableau je veux mettre dans mon itération de la fonction et de l'enregistrer dans mon mongoDB (j'ai omis quelques étapes ici qui ne sont pas importants). Après chacun de ces éléments a été enregistré dans la base de données (ou refusé) je veux de la console.le journal pour afficher "Tout fait". Malheureusement, Tous les fait s'affiche presque immédiatement après l'appel de la série tandis que tout le reste est toujours en cours de traitement. Comment puis-je faire de ce droit?

Je suis à l'aide de la mangouste avec un modèle appelé "lumière" et pour des raisons de lisibilité j'ai omis tous tre des messages à partir du code. Je utiliser un nœud-async pour la eachSeries partie

var async = require('async');    
var results = [very big array]
var iteration = function(row,callbackDone) {
light.find({data: row.data}, function (err,entry) {
if(entry.length) {
callbackDone();
return console.log(entry + ' already exists');
}
var newEntry = new light(row);
newEntry.save(function (err,doc) {
console.log(entry + ' saved');
callbackDone();
});
});
};
async.eachSeries(results,iteration, function (err) {
console.log('All done');
});
Essayez d'ajouter certains d'erreur enregistreurs (if (err) console.log(err);).
J'ai enlevé l'erreur enregistreurs pour des raisons de lisibilité. désolé si je n'étais pas clair. Le tableau facilement a+ de 100 entrées, les mangoustes, les opérations de travail parfaitement, mais les enregistre tous se passera après la console.log ("tout fait") a été affiché. J'ai besoin d'un moyen d'afficher "tout fait" exactement après que tous les éléments de mon tableau ont été traitées

OriginalL'auteur elmalto | 2014-02-12

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *