모델의 배열에 반복하여 데이터를 찾을 수 :몽구스는 : 내가 비동기 알고리즘에 갇히지있어
var allRefDatasSchemas = {
RefAllotement: mongoose.model('RefAllotement', RefDataSchema),
RefModeleConstructeur: mongoose.model('RefModeleConstructeur', RefDataSchema),
RefTypeKit: mongoose.model('RefTypeKit', RefDataSchema),
RefTypeUtilisation: mongoose.model('RefTypeUtilisation', RefDataSchema),
};
내가 잡아 싶습니다
나는 몽구스 모델의 배열을했습니다 각 컬렉션의 모든 항목을 배열이나 그 안에 넣으십시오. 내가 그렇게 할 경우 나 모델 항목 나는 또한 성공하지 async 라이브러리를 시도했습니다
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
});
}
에 속하는 아는 는 find
콜백의 this
키워드는 그래서 불가능 현재 모델, 참조하지 않습니다 왜냐하면 나는 항상 같은 문제로 돌아 가기 때문에 어떤 모델이 콜백 내부에서 찾기 쿼리를 실행 하는지를 알 수 없다. 약속을 사용하는 경우 Idem은 then
입니다.
제발 도와주세요. 어떻게할까요?
EDIT model.find는 query.find, query.find는 mquery.find를 호출합니다. mquery.find에서 그 시점에서이 참조를 잃어 콜백이 호출됩니다. this._collection.find (conds, options, utils.tick (callback)); /EDIT
당신은 정보를 추가하기보다는 의견을 게시하기 위해 자신의 질문을 편집 할 수있을 것입니다. 나는 확실히 당신이 다른 방식으로 모델을 만들 수 있기 때문에 왜 이것을하고 싶은지 이해하지 못합니다. 그러나 'async' 시리즈는 게시자가 게시 한 코드가 아니라는 점을 제외하고는 효과가 있습니다. –
네, 모델링에 대한 귀하의 질문을 이해합니다 : 내 목표는 백본 클라이언트 응용 프로그램에서 한 번에 일부 refdata (선택한 입력에 사용되는 데이터)를로드하는 것입니다 ([패턴] (http://ricostacruz.com/backbone -patterns/# bootstrapping_data)) :) – Etienne