i'm getting stuck on an asynchronous algorithm :
I've an array of mongoose models :
var allRefDatasSchemas = {
RefAllotement: mongoose.model('RefAllotement', RefDataSchema),
RefModeleConstructeur: mongoose.model('RefModeleConstructeur', RefDataSchema),
RefTypeKit: mongoose.model('RefTypeKit', RefDataSchema),
RefTypeUtilisation: mongoose.model('RefTypeUtilisation', RefDataSchema),
};
I'd like to grab all items of each collection and put them in an array or something like that.
If I do that, the this
keyword of the find
callback doesn't refer to the current model,
so impossible for me to know which model items belong to
var results = {};
for (var model in allRefDatasSchemas) {
allRefDatasSchemas[model].find(function(err, data) {
// I'd like to do something like that :
// but this.modelName is null, because it isn't the model
// on which the find is done.
results[this.modelName] = data;
// if I use "model" variable, it doesn't work, because asynchronous callback
});
}
I've also tried async library without success, because I always return to the same issue : impossible to know which model execute the find query inside the callback.
Idem in a then
if I use promises.
Please help me :) How would you do that ?
EDIT model.find calls query.find, query.find calls mquery.find. In mquery.find, callback is called, by lost the this reference a that time : this._collection.find(conds, options, utils.tick(callback)); /EDIT