私は、FirebaseでangularJsを使用しています。 firebaseからデータを取得するには、次のコードが使用されます。プロミスはオブジェクトの配列を返しません
Controller.js
$scope.load_msg=function(){
$scope.msg=[];
Chat.load_msg($scope.name,$scope.user.profile.name).then(function(arr){
$scope.msg=arr;
console.log($scope.msg);
},function(error){
console.log(error);
});
}
Service.js
load_msg:function(name,frm){
var deferred = $q.defer();
var sref=ref.child('/Chats/'+frm);
var rref=ref.child('Chats/'+name);
var msgArray=[];
ref.orderByChild("to").equalTo(name).once('child_added',function(messages){
msgArray=msgArray.concat(messages.val());
deferred.resolve(msgArray);
},function(error){
deferred.reject(error);
});
return deferred.promise;
}
msgArray
()は上から照会すべての要素を含むが、バックコントローラarr
でのみ照会最初のオブジェクトを有しています。約束をどのようにmsgArray
全体の配列を送信するには?
約束は1回限り解決できます。配列が完了する前に 'resolve'メソッドを呼び出さないでください。 – Bergi
私は解決策をどこに呼び出すべきか教えてください。私は解決策を見つけることができない – Yash