如果我重新构建数据以供使用,我该如何让Firebase自动更新它?

时间:2014-11-27 22:18:41

标签: javascript angularjs data-structures firebase angularfire

如果我使用:

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同步,但是数据是否使用不同的结构进行解析?

1 个答案:

答案 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

相关问题