0

У меня возникли большие трудности с попыткой сделать реляционный запрос через firebase с использованием углового.Angularfire nosql query с использованием настройки внешних внешних ключей

 var userChallengeRef=new Firebase(FIREBASE_URL+ 'users/'+$rootScope.currentUser.$id+'/mychallenges'); 
     var userChallengeInfo=$firebaseArray(userChallengeRef) 
     // var log = []; 

     // var challUserRef=challengesRef 

     // challUserRef.orderByChild("participants").equalTo($rootScope.currentUser.$id).on("child_added", function(snapshot){ 

     // }) 
     // var challUserInfo=$firebaseArray(challUserRef); 




     $scope.mychallenges=[]; 
     // angular.forEach(userChallengeRef, function(value, key) { 
     // // this.push(key + ': ' + value); 
     // var temp=new Firebase(FIREBASE_URL+ 'challenges/'+value); 
     // $scope.mychallenges.push(temp) 
     // }, log); 
     userChallengeInfo.$loaded() 
     .then(function(){ 
      angular.forEach(userChallengeInfo, function(userChallengeInfo) { 
       // console.log(userChallengeInfo); 
       // console.log(userChallengeInfo.$id); 
       var tempRef=new Firebase(FIREBASE_URL+ 'challenges/'+userChallengeInfo.$id) 
       var temp=$firebaseArray(tempRef); 
       console.log(userChallengeInfo.role) 
       temp.$loaded().then(function(){ 
        console.log(temp.name) 
       }) 
       // console.log(temp); 


       // $scope.mychallenges.push(temp); 
        $scope.mychallenges.push({ 
         id: userChallengeInfo.$id, 
         name: 'test object', 
         name2: 'temp.$name' 
         date: temp.date, 
         role: temp.challengeParticipant.role,*/ 

        }) 
      }) 
      console.log($scope.mychallenges); 

     }); 

Я пробовал так много разных способов добиться успеха. Темп проявляется как странный объект. Я хочу сгенерировать угловой массив, только вводя в объекты из цикла foreach массива firebase, которые имеют идентификатор пользователя. Затем я использую ng-repeat, чтобы он работал. Я бы предпочел не использовать фильтр, потому что этот метод намного быстрее, если база данных становится большой. Однако я открыт для любых предложений по наилучшей практике.

Если мой реляционная firebasearray implentation из mychallenges правильно работал как массив «userChallengeInfo» было бы показывать, как это в журнале:

Object {date: 1455391999128, role: "Participant", $id: "-KAHXgh5_j-4PPnyjNP4", $priority: null} 

Примечание Я не хочу использовать firebase массив, делая это, потому что Я хочу, чтобы это был временный локальный объект, который не хранится в базе данных.

+0

Почему вы не просто 'var userChallengeRef = новая Firebase (FIREBASE_URL + 'пользователи /' + $ rootScope.currentUser. $ Id + '/ mychallenges'); userChallengeRef.once ('значение', функция (моментальный снимок) {console.log (snapshot.val());}); 'Вы можете, если нужно, петлю над дочерними/вызов с помощью' 'snapshot.forEach()'] https://www.firebase.com/docs/web/api/datasnapshot/foreach.html). –

+0

Я пытаюсь использовать идентификаторы из mychallenges в текущем пользователе для доступа к информации о вызовах из проблем/таблицы. – lastlink

ответ

0

Решение: После нескольких различных экспериментов я обнаружил, что если я изменю

var temp=$firebaseObject(tempRef); 

Тогда я могу столкнуть ее в угловой локальный массив правильно называть различные атрибуты. Теперь я могу назвать атрибуты temp, например temp.name.

Я думаю, что я не могу подтолкнуть firebasearray к угловому массиву, но я могу надавить на него firebaseobject. Я знаю, что firebasearray обычно обновляет базу данных автоматически, когда объект должен вызвать метод сохранения.

Смежные вопросы