0
Mongodb 데이터베이스에서 검색 할 때 각 교대에 할당 된 개인 수를 계산하려고합니다. 그런 다음 교대 배열 내의 해당 교대 객체에 해당 값을 추가하려고합니다. 불행히도, 코드가 Q.all 섹션을 통해 진행되고있는 것 같지 않습니다. 저는 약속이나 Q의 개념에 익숙하지 않아 매우 부주의 한 오류를 범했는지 확신 할 수 없습니다.Q의 약속 배열을 수행
dbFunctions.algorithm = function(collectionName, callback){
var collection = dbConnection.collection(collectionName);
//order the shifts in order of number of volunteers
var shifts = [ { value : 'setup' }, { value : '8:30' }, { value : '9:00' }, { value : '9:30' }, { value : '10:00' }, { value : 'cleanup' } ];
var promiseList = [];
for(var i=0; i < shifts.length; i++) {
promiseList[i] = Q.defer();
}
for (var j=0; j<shifts.length; j++){
var promise=promiseList[j];
var shift = shifts[j];
collection.find({ 'Available[]' : { $elemMatch : { $eq : shift.value } } }).toArray(function(err, result) {
shift.count = result.length;
promise.resolve();
});
}
console.log(promiseList);
console.log(_.map(promiseList,'promise'));
console.log("here1");
Q.all(_.map(promiseList,'promise')).then(function(value){
console.log("here2");
shifts.sort(function (value1, value2){
return value1.count - value2.count;
});
console.log(shifts);
});
}
코드의 Q.all 섹션 내에서 이러한 카운트 값을 기반으로 교대 배열을 정렬하려고합니다. 이것은 console.log에서 얻는 메시지입니다 (_. map (promiseList, 'promise')); :
[ { state: 'pending' },
{ state: 'pending' },
{ state: 'pending' },
{ state: 'pending' },
{ state: 'pending' },
{ state: 'pending' } ]
here1
Q.all (_. map (promiseList, 'promise'))'를'Q.all (promiseList) '로 변경하면 더 잘 작동합니까? –
내가 할 때 그것은 코드의 전체 섹션을 거칩니다. 그러나 다음과 같이 출력됩니다 : here2 [{value : 'setup'}, {value : '8:30'}, {value : '9:00'}, {value : '9:30' }, {값 : '10 : 00 '}, {값 :'정리 '}] – user7438390
카운트가 저장되지 않고 배열이 정렬되지 않습니다. – user7438390