0

I이 이온 코드를 가지고각도 -] .concat.apply 빈 배열을 반환

.factory('resultsFactory', function($http, $q, $rootScope, $firebaseArray, $timeout) { 
    var results = {}; 

    function _all(){ 
    var d = $q.defer(); 
    var palabras = $rootScope.textAreaOfrecer.toLowerCase().split(' '); 
    var solicitudes = []; 
    Promise.all(
       solicitudes = palabras.map(palabra => $firebaseArray(firebase.database().ref().child("solCompras").orderByChild("palabras/" 
               + palabra).equalTo(true))) 
        ); 

    var array = [].concat.apply([],solicitudes); 

    d.resolve(array); 

    return d.promise;  
    } 

    results.all = _all; 
    return results; 
}) 

문제가 있음 코드 : VAR 배열 = [] .concat.apply ([], 걱정거리); 하늘의 배열을 돌려줍니다.

json of solicitudes

+0

안녕하세요. 어떤 결과를 기대합니까? 문제를 해결할 수 있도록 자세한 내용을 게시하십시오. –

답변

0

대신 [].concat.apply(solicitudes) 사용. palabras이 빈 배열 일 수 있으며 [].map(...) == []Promise.all(solicitudes)을 직접 반환 할 수 있습니다.

function _all() { 
     var palabras = $rootScope.textAreaOfrecer.toLowerCase().split(' '); 
     return Promise.all(palabras.map((palabra) => { 
      return $firebaseArray(firebase.database().ref().child("solCompras").orderByChild("palabras/" + palabra).equalTo(true)); 
     })); 
    } 
+0

죄송합니다. –

+0

콜렉션'palabras'가 빈 배열인지 확인하지 않으셨습니까? true이면 항상 반환합니다. [] –

+0

아니요, 비어 있지 않습니다. –

0
$scope.solicitudes = [{post: 'Loading..'}]; 


Promise.all(
     $scope.solicitudes = palabras.map(palabra => $firebaseArray(firebase.database().ref().child("solCompras").orderByChild("palabras/" + palabra 
                ).equalTo(true))) 
      ).then(function(){ 
           //http://www.jstips.co/en/flattening-multidimensional-arrays-in-javascript/ 
           var myNewArray = $scope.solicitudes.reduce(function(prev, curr) { 
           return prev.concat(curr); 
           }); 

           $scope.solicitudes = myNewArray; 
         }); 
+0

이 코드는 내 문제를 완벽하게 해결했습니다. –