배열 객체 "사용자"이 있으며이 사용자의 모든 프로필 정보 (예 : 이름 및 전자 메일)는 user.uid
과 함께 저장됩니다.AngularJS의 Firebase에서 관련 데이터를 어떻게로드합니까?
또 다른 객체 "friends"은 user.uid
각각에 대해 사용자가 친구이지만 friend.uid
만 저장합니다.
이제 user.uid의 모든 친구를 검색 할 때이 친구의 프로필을 디스플레이에 연결하고 싶습니다. 이것은 분명히 비동기 로딩에 문제를 일으킬 것입니다.
저는 Firebase를 사용하고 있습니다. 누군가가 해결 방법에 대한 예제를 줄 수 있다면 좋겠어요.
나는 다음을 시도하지만 (작동하지 않습니다는 길이가 있음을 보여줍니다 0 $는 목록에있는 모든 사용자를로드에도 불구하고) (로드 후 :
컨트롤러
FriendsService.getFriends(user.uid).$loaded(
function(Friends){
$scope.Friends = Friends;
// Friends is here still undefined???
angular.forEach(Friends, function(iterator){
FriendsService.getUserData(iterator.friendID).$loaded(function(output){
$scope.FriendsData.push(output)
})
})
},
function(error){
window.alert("Ooooops: " + error)
})
서비스
var getFriends = function(userID) {
return fbutil.syncObject("friendsofusers/" + userID + "/friends/")
// equivalent to:
// var ref = new Firebase("https://yourapp.firebaseio.com/friendsofusers/" + userID + "/friends/");
// var sync = $firebase(ref)
// return sync.$asObject();
};
var getUserData = function(userID) {
return fbutil.syncObject("users/" + userID);
};
이 코드는 문제를 확인하고 이해하기에 충분한 컨텍스트를 제공하지 않습니다. angularFire-seed, 버전 정보 없음, 친구 생성 방법에 대한 설명이 없습니다. 또한 [동기식으로 비동기식 목록을 읽으려고했습니다.] (http://stackoverflow.com/questions/27049342/impossible-to-access-array-with-angular-and-firebase). 또한 JavaScript 객체를 만들어 배열로 사용하려고했습니다. syncObject() 대신 syncArray()를 사용하고 (길이가 필요한 경우) [docs 읽기] (http://goo.gl/ouQm1j) [docs] (https://angularjs.org) [docs] (http : //goo.gl/J7Vym). – Kato
안녕하세요 카토, 답장을 보내 주셔서 감사합니다. 내 질문을 업데이트하려고합니다. 비동기 목록을 동 기적으로 호출하는 실수를 어디에서 설명 할 수 있습니까? $ loaded() 뒤에 목록을 호출하기 때문에? – AMG