Мангуста: поиск данных с помощью цикла на массиве моделей

я застреваю на асинхронном алгоритме:

У меня есть множество моделей мангусты:

var allRefDatasSchemas = {
  RefAllotement: mongoose.model('RefAllotement', RefDataSchema),
  RefModeleConstructeur: mongoose.model('RefModeleConstructeur', RefDataSchema),
  RefTypeKit: mongoose.model('RefTypeKit', RefDataSchema),
  RefTypeUtilisation: mongoose.model('RefTypeUtilisation', RefDataSchema),
};

Я хотел бы собрать все элементы каждой коллекции и поместить их в массив или что-то в этом роде. Если я это сделаю, тоthis Ключевое словоfind обратный вызов не относится к текущей модели, поэтому для меня невозможно узнать, к каким элементам модели относятся

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

  });

}

Я также пыталсяасинхронной библиотека без успеха, потому что я всегда возвращаюсь к одной и той же проблеме: невозможно узнать, какая модель выполняет запрос поиска внутри обратного вызова. То же самое вthen если я использую обещания.

Пожалуйста, помогите мне :) Как бы вы это сделали?

EDIT model.find вызывает query.find, query.find вызывает mquery.find. В mquery.find обратный вызов вызывается из-за потери ссылки this в этот раз: this._collection.find (conds, options, utils.tick (callback)); /РЕДАКТИРОВАТЬ

Ответы на вопрос(1)

Ваш ответ на вопрос