Я пытаюсь получить сообщения от всех пользователей в Ionic (без определенного идентификатора пользователя). Я могу получить все сообщения от первого пользователя в базе данных, но у меня возникают проблемы с получением сообщений от других пользователей.
Это упрощенная версия моей структуры firebase:
"posts_meta" : {
"uid" : {
"post-id" : {
"title": "",
"content": ""
},
},
"uid" : {
"post-id" : {
"title": "",
"content": ""
},
"post-id" : {
"title": "",
"content": ""
},
}
И здесь я пытаюсь сначала пропустить пользователей, а затем пропустить записи для каждого пользователя, используя вложенный foreach:
.factory('Timeline', function($q, Profile, Utils, Codes) {
var self = this;
self.getAllPosts = function() {
var qGet = $q.defer();
var ref = new Firebase(FBURL);
ref.child("posts_meta").once("value", function(snapshot) {
snapshot.forEach(function(childSnapshot) {
childSnapshot.forEach(function(grandchildSnapshot) {
qGet.resolve(grandchildSnapshot.val());
})
})
}, function (error) {
Codes.handleError(error);
qGet.reject(error);
});
return qGet.promise;
};
Что я делаю не так? Я что-то упускаю?
Вы не можете вызвать несколько разрешений для одного обещания. Обещание разрешается в первой итерации цикла, а затем остальные игнорируются.
Вы можете попробовать сохранить все granchils в массив, но я считаю, что у firebase есть способы решить эту проблему с лучшей производительностью.
var values = [];
snapshot.forEach(function(childSnapshot) {
childSnapshot.forEach(function(grandchildSnapshot) {
values.push(grandchildSnapshot);
})
})
promise.resolve(values)