Мангуста: поиск данных с помощью цикла на массиве моделей
я застреваю на асинхронном алгоритме:
У меня есть множество моделей мангусты:
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)); /РЕДАКТИРОВАТЬ