Angularjs 使用关系外键设置的Angularfire nosql查询

Angularjs 使用关系外键设置的Angularfire nosql查询,angularjs,foreign-keys,relational-database,angularfire,nosql,Angularjs,Foreign Keys,Relational Database,Angularfire,Nosql,我一直很难使用angular通过firebase进行关系查询 var userChallengeRef=new Firebase(FIREBASE_URL+ 'users/'+$rootScope.currentUser.$id+'/mychallenges'); var userChallengeInfo=$firebaseArray(userChallengeRef) // var log = []; // var chall

我一直很难使用angular通过firebase进行关系查询

        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);

        });
我尝试过很多不同的方法,但都没有成功。温度显示为一个奇怪的对象。我只想通过输入firebase数组foreach循环中具有userid的对象来生成角度数组。然后,我使用ng重复使其工作。我不想使用过滤器,因为如果数据库变大,这种方法会更快。然而,我愿意接受关于最佳实践的任何建议

如果mychallenges的关系型firebasearray实现与“userChallengeInfo”数组一样正常工作,它将在日志中显示如下:

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

注意:我不想在执行此操作时使用firebase阵列,因为我希望它是一个临时本地对象,而不是存储在数据库中。

解决方案:经过一些不同的实验后,我发现如果我更改

var temp=$firebaseObject(tempRef);
然后我可以将它推入角度局部数组,以正确调用不同的属性。现在我可以调用temp的属性,比如temp.name


我想我不能把firebasearray推到角度数组上,但我可以把firebaseobject推到它上面。我知道firebasearray通常会在对象需要调用save方法时自动更新数据库。

为什么不干脆
var userChallengeRef=new Firebase(Firebase_URL+'users/'+$rootScope.currentUser.$id+'/mychallengers');userChallengeRef.once('value',函数(快照){console.log(snapshot.val());})如果需要,您可以在子项/挑战上循环。我正在尝试使用当前用户中mychallenges的ID访问挑战/表中的挑战信息。