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

Javascript 如果我重新构造数据以供使用,如何使Firebase自动更新它?,javascript,angularjs,data-structures,firebase,angularfire,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 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同步,尽管数据是用不同的结构解析的?

您的变量
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”的更改除外。

虽然这是一个非常小的示例,但您可以在这里找到更多内容:


由于您正在监视Firebase的顶层,因此您的
firebaseData
对象将接收到该Firebase的所有更新。但我不明白你说的“重组数据”是什么意思。您是否可以显示您正在尝试执行的操作的一些代码(通过单击问题下的编辑链接并添加代码)?