У меня есть два отдельных списка сообщений и авторов в моей базе данных, каждое сообщение содержит authorId для ссылки на соответствующего автора.
Следующий метод помогает мне получить весь список сообщений, систематически включая имя автора для каждого сообщения:
app.factory('NormalizedPosts', function($firebaseArray, FirebaseFactory) {
var PostsWithAuthors = $firebaseArray.$extend({
// override $$added to include author name
$$added: function(snap) {
var record = $firebaseArray.prototype.$$added.call(this, snap);
FirebaseFactory.$getAuthorId( record.authorId ).$loaded(function( authorData ) {
record.authorData = authorData;
});
return record;
},
// ????????
$$updated: function(snap) {
var rec = $firebaseArray.prototype.$$updated.call(this, snap);
var updatedRecord = this.$getRecord(snap.key());
FirebaseFactory.$getAuthorId( updatedRecord.authorId )
.$loaded(function( authorData ) {
rec.authorData = authorData;
});
return rec;
}
});
return PostsWithAuthors;
});
PS: FirebaseFactory — это просто оболочка для методов firebase.
тогда я звоню
var list = new NormalizedPosts ( new Firebase(FBURL).child("posts") );
в моем контроллере, чтобы получить полный список. Это прекрасно работает.
Я ломаю голову над тем, что должно войти в метод $$updated: когда добавляется новая запись, список обновляется, как и ожидалось (через метод $$added). Но когда в данных поста происходят изменения (например, заголовок поста), мой список не обновляется, так как в настоящее время я возвращаю false в методе $$updated.
Вопрос: Что должно быть в методе $$updated, чтобы при изменении данных поста мой список обновлялся соответствующим образом (и в дальнейшем возвращал имя автора!). Спасибо