使用 firepad+firebase+ace 在每个修订 ID 中重放读取对象的代码

code replay reading object in each revision Id using firepad+firebase+ace

我正在使用 firebase、firepad 和 ace 技术。 我能够通过 firepad 和 ace 编写文档并将其存储在 firebase 中,在不同的 times.I 查看 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_ 将它们组合在一起并应用它们以使您在历史记录的那个时刻保持最新状态。

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

希望这对您有所帮助。