現在、加藤の要点 ( https://gist.github.com/katowulf/f78d4a224c06a643ddfa ) を使用して、レコードを別の Firebase パスで正規化しています。
私が直面している問題は、オブジェクトを更新して firebase データベースに戻そうとしているときです。データベースは更新されません (コンソールにエラー メッセージは表示されません)。
私の本のテーブルは次のようになります。
books:
-JyDpkQrUozE3L7flpo: {
title: "title1",
author: {-JyDpkQrUozE3L7fl1x: true}
},
-JyDpkQrUozE3L7flp1: {
title: "title2",
author: {-JyDptrrrezE3L7flKx: true}
},
-JyDpkQrUozE3L7flp2: {
title: "title3",
author: {-JyDpkQrUozE3L7f222: true}
}
私の著者テーブルは次のようになります。
authors:
-JyDpkQrUozE3L7flKx: {
firstname: "jacques",
lastname: "smith"
},
-JyDptrrrezE3L7flKx: {
firstname: "bill",
lastname: "halley"
},
-JyDpkQrUozE3L7f222: {
firstname: "john",
lastname: "ford"
}
normalizedBook の私のサービスは次のようになります。
.factory('NormalizedBook’, ['$firebaseObject', 'firebaseService', function($firebaseObject, firebaseService) {
var service = $firebaseObject.$extend({
$$updated: function(snap) {
var self = this;
var record = $firebaseObject.prototype.$$updated.call(this, snap);
firebaseService.$getAuthor( self.authorId ).$loaded().then(function( authorData ) {
self.authorFirstName = authorData.authorFirstName;
self.authorLastName = authorData.authorLastName;
});
return record;
}
});
return service;
}])
firebaseService は、データを取得するための単なるヘルパー サービスです。
var service = {};
service.refAuthors = new Firebase(FBAuthors);
service.authors = $firebaseArray( refAuthors );
service.$getAuthor = function(id) {
if( !service.authors.hasOwnProperty(id) ) {
service.authors[id] = $firebaseObject(service.refAuthors.child(id));
};
return service.authors[id];
};
…….
return service;
私のコントローラーは次のようになります。
.controller('booksController', ['$scope', '$firebaseArray', 'normalizedBook', function($scope, $firebaseArray, normalizedBook) {
$scope.bookSelected = new normalizedBook(firebaseService.refBooks.child(id);
$scope.updateBookSelected = function(item) {
$scope.bookSelected.$save(item);
};
});
私のビューは期待されるオブジェクト (同じオブジェクト内の本と著者の情報) をレンダリングするので、すべてが正常に機能しています。唯一の問題は、オブジェクトを更新して firebase データベースに戻す方法です。これを行う方法について何か考えはありますか?