Javascript 使用firepad+;firebase+;王牌

Javascript 使用firepad+;firebase+;王牌,javascript,json,firebase,ace-editor,firepad,Javascript,Json,Firebase,Ace Editor,Firepad,我正在使用firebase、firepad和ace技术。 我能够通过firepad和ace编写文档,并在不同的时间将其存储在firebase中。我看到历史记录在firebase中生成。 下一件事是我需要添加一段代码,我可以在历史上的任何时候检索文档。 我编写了以下代码: sObj.once('value', function(historySnapshot){ // Get each revision Id historySnapshot.forEach(function(itemSna

我正在使用firebase、firepad和ace技术。 我能够通过firepad和ace编写文档,并在不同的时间将其存储在firebase中。我看到历史记录在firebase中生成。 下一件事是我需要添加一段代码,我可以在历史上的任何时候检索文档。 我编写了以下代码:

sObj.once('value', function(historySnapshot){
// Get each revision Id
    historySnapshot.forEach(function(itemSnapshot) {
        var name = 'history/'+itemSnapshot.name(); 
        console.log(name);
        var idref = sObj.child(name);
        /* Here I can read each revision object, find the operation  and apply that change
           in ace editor */

    });
});
读取修订对象的一种方法是JSon解析,知道有什么操作。在编辑器上应用该操作。构建代码什么样的操作对应什么可能是乏味的

除此之外,还有一些函数可以避免解析,并可以直接告诉我要应用什么操作

我看到了getText函数,但它告诉了当前值。
我需要看到给定历史中任何一点的价值。

这是可行的,但不是微不足道的,因此我将提供一些指针,但不是完整的答案。对不起

感兴趣的代码可能是FirebaseAdapter.prototype.monitorHistoryStartingAt

如果您将其传递到0,它将在历史记录的开始处开始(而不是在最近的检查点)。默认情况下,它读取所有修订,因此您还需要对其进行修改,使其停止在要显示的修订处。然后,一旦它在pendingReceivedRevisions中对这些操作(从0到感兴趣的操作)进行排队,它将调用handleInitialRevisions,将它们组合在一起,并应用它们,让您在历史上的那个时刻了解最新情况

然后您需要确保编辑器是只读的,因为您不能明智地修改旧版本

希望这有帮助