0
두 개의 루프 사이의 각도 약속에 대한 문제가 있습니다 ... 첫 번째 루프는 값 배열을 통과하고 각 값에 대해 PouchDB 쿼리를 만들어 일부 데이터를 검색합니다. 마지막으로, 같을 것이다 JSON 개체 컨트롤러로 돌아 싶습니다 : 기본적으로 "항목"이 개체에서견인 루프를 통한 각도 보장
{
items: [
{
"attribute": "some value"
},
{
"attribute": "some other value"
},
...
],
"a_total": "some_total",
"another_total": "some_other_total"
}
보이는 함수에 코드를 넣어 같은 :
var _stockByAreas = function(){
var deferred = $q.defer();
var data = {}; // Final datas to return to controller
// Get first array to loop into
var storageAreas = storageAreaService.storageAreaList();
var areas = []; // All of area
// Walk across array
angular.forEach(storageAreas, function(zone){
var area = {}; // First object to return
area.id = zone.id;
area.libelle = zone.libelle;
// Then make a PouchDB query to get all datas that involved
MyKitchenDB.query(function(doc, emit){
emit(doc.storage);
}, { key: area.id, include_docs: true }).then(function (result) {
area.sRef = "tabsController.addTo({id: '" + area.id + "'})";
area.nbProduct = 0;
area.totalQuantity = 0;
area.totalValue = 0;
// ... process result
if(result.rows.length > 0){
// Some results, so... let's go
area.sRef = "tabsController.outFrom({id: '" + area.id + "'})";
var rows = result.rows;
// Counter initialization
var total = 0;
var value = 0;
angular.forEach(rows, function(row){
total++;
var stocks = row.doc.stock;
angular.forEach(stocks, function(stock){
var nearOutOfDate = 0;
var nearStockLimit = 0;
quantity += stock.quantity;
value += stock.quantity * stock.price;
// Evalue la date de péremption
var peremptionDate = moment(stock.until);
var currentDate = moment();
if(currentDate.diff(peremptionDate, 'days') <= 1){
nearOutDate += 1;
}
});
area.nbProduct = total;
area.qteTotale = quantity;
area.valeur = value;
if(quantite == 1){
nearLimitOfStock += 1;
}
areas.push(area); // Add result to main array
});
}
}).catch(function (err) {
// Traite les erreurs éventuelles sur la requête
});
/**
* Hey Buddy... what i have to do here ?
**/
data.items = areas;
data.nearLimitOfStock = nearLimitOfStock;
data.nearOutOfDate = nearOutOfDate;
});
deferred.resolve(data);
return deferred.promise;
}
...하지만, 콘솔은 ... 내가 정말 약속을 실행하는 방법을 이해하지 않습니다 생각
... "영역"가 정의, 너무 다른 값으로되지 않도록 반환
누가 내 사건에서 기대하는 결과를 얻을 수없는 이유를 설명하기 위해 애비가 있습니까? Thx
들으, 난 이미 내 데이터베이스를 쿼리하는 다른 기능을 만들기 위해 내 코드를 잘라 것 ... $ q.all()를 시도하지만 같은 문제가 있었다거야, 나는 $ q.all 생각 고통의 많은 시간을 해결할 것입니다. –