Firestore数据检索异步问题,显示“ TypeError:无法读取未定义的属性”

时间:2019-03-09 19:45:05

标签: javascript jquery node.js firebase google-cloud-firestore

假设我在Firestore中有一些数据。当我调用“计算”​​功能时,对于每个匹配的元素,“ alld”数组将被新对象压入。 在push()之后,我得到console.log(alld);没关系。 但是当我调用getBl()函数和console.log(alld.n)时;然后显示所有数据,并显示错误:“ TypeError:无法读取b。$ scope.getBl处未定义的属性'n'”。我不明白原因。我知道get()是一个异步函数。我还应用了$ scope。$ applyAsync();。是这个原因,还是存在其他原因,我不知道。 有什么解决方案?

var app = angular.module('myApp', ['firebase', 'ngRoute', 'angular.filter']);

app.controller('mCntlr', function ($scope, $firebaseArray) {
  var alld=$scope.alld=[{'n':j,'d':h,'c':l}];
  
  
 $scope.getBl=function (b){
let i=0;
   for(i=0;i<alld.length;i++)
   console.log("check  = "+$scope.alld[i].n); //Consol.log is printing data but it also showing "TypeError: Cannot read property 'n' of undefined"
   };
   
   
   $scope.Calculation = function (e) { firebase.firestore().collection("DataCollection").get()
  .then(function (snapshot) {

    snapshot.docs.forEach(element =>{
       fld =element.data();
       fld.dC.forEach(function(item){ alld.push({'n':item.A,'d':dr,'c':c});
  $scope.$applyAsync();});

     });
         console.log(alld); //it is ok
         $scope.getBl(); 
  }).catch(function (err) {
    console.log(err);
  });
  };
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>

0 个答案:

没有答案