У меня возникли большие трудности с попыткой сделать реляционный запрос через 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 массив, делая это, потому что Я хочу, чтобы это был временный локальный объект, который не хранится в базе данных.
Почему вы не просто '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). –
Я пытаюсь использовать идентификаторы из mychallenges в текущем пользователе для доступа к информации о вызовах из проблем/таблицы. – lastlink