Firebaseデータベースからデータを取得しようとしています。Firebase Storageから対応するイメージを取得しようとしています。問題は、私の見解がデータでそれ自身を更新したくないということです。更新されたスコープ変数がビューで表示されません。約束していません
データベースからデータを単に取得しようとすると、完全に機能します。私は、スコープ変数をただちに見て、$ scope.friendsinfoが更新されるのを待たずにピクチャを取得する機能(少し時間がかかる)を追加したようです。私は私の約束に間違ったことをしていると思うし、$ qを使うべきだと思いますが、どのように正確にわかりません。誰かがこれについて最善の方法は何だろうと教えてくれますか?どうもありがとう!
var friendsRef = firebase.database().ref('friendships/' + firebase.auth().currentUser.uid);
$scope.friends = $firebaseArray(friendsRef);
$scope.friendsinfo = [];
$scope.$watch('friends', function() {
var newfriends = $scope.friends;
var newfriendsinfo = [];
for(var i = 0; i < newfriends.length; i++){
var ref = firebase.database().ref('users/' + newfriends[i].$id);
var profilePicRef = firebase.storage().ref("profilepictures/" + newfriends[i].$id + "/profilepicture");
var picPromise = fetchPicture(profilePicRef);
var newfriendid = newfriends[i].$id;
var newfriendagreed = newfriends[i].agreed;
picPromise.then(function(data){
ref.once('value', function(snapshot){
newfriendsinfo.push({
id: newfriendid,
name: snapshot.val().name,
email: snapshot.val().email,
agreed: newfriendagreed,
profilepicture: data //This is the functionality that causes my view to not display the updated $scope.friendsinfo because it takes too long.
});
});
});
}
$scope.friendsinfo = newfriendsinfo;
alert($scope.friendsinfo.length);
}, true);
function fetchPicture(ref){
return ref.getDownloadURL().then(function(url) {
return url;
}).catch(function(error) {
alert("error");
});
}