如果我使用:
var ref = new Firebase("https://myURL.firebaseio.com/");
var sync = $firebase(ref);
var firebaseData= sync.$asObject();
随着firebaseData
的数据发生变化, https://myURL.firebaseio.com/
会发生变化。它们会同步。
如果我重新构建数据并将其定义为某个新变量var newStructure
,我该如何让它与https://myURL.firebaseio.com/
或firebaseData
同步?
我是否有办法观察firebaseData
的变化并回顾重组方法?
有没有办法知道firebaseData
中哪些具体更改,只对newStructure
进行相关更改?
newStructure
是否可以直接与Firebase同步,但是数据是否使用不同的结构进行解析?
答案 0 :(得分:1)
您的变量firebaseData
代表您的firebase集合。
您对firebaseData
所做的所有更改都将在各个连接中同步:
var ref = new Firebase("https://myURL.firebaseio.com/");
var sync = $firebase(ref);
var firebaseData = sync.$asObject();
您可以观察是否对对象进行了任何更改:
firebaseData.$watch(function(event){
console.log("Change made to this firebase object");
// Then you can call a function which could restructure your data:
restructureData(firebaseData, event);
});
所以你的restructureData
函数可能如下所示:
var restructureData = function(firebaseObj, event){
// This function updates firebase on every change to firebase
// But we don't want to update it again after running this function
if(event.key === "changesMadeToFirebase") return;
firebaseObj.changesMadeToFirebase += 1;
firebaseObj.$save().then(function(){
console.log("data restructured");
}, function(err){
console.log("There was an error:", err);
});
};
这使您可以检查对firebase进行了多少更改,但对字段"changesMadeToFirebase"
虽然这是一个非常小的例子,但你可以在这里找到更多:
https://www.firebase.com/docs/web/libraries/angular/api.html