Angularjs 使用关系外键设置的Angularfire nosql查询
我一直很难使用angular通过firebase进行关系查询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
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访问挑战/表中的挑战信息。