2

我正在使用 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 函数,但它告诉了当前值。我需要在给定历史的任何时候看到价值。

4

1 回答 1

2

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

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

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

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

希望这可以帮助。

于 2015-03-31T18:29:58.953 回答