gpt4 book ai didi

javascript - 如何保留同步期间发生的 DBChangeTracker 中的更改?

转载 作者:可可西里 更新时间:2023-11-01 14:53:56 26 4
gpt4 key购买 nike

我使用 SequelSphere 作为我的 HTML5 客户端数据库。我还使用“更改跟踪器”来跟踪我的应用程序正在执行的任何插入、更新和删除操作。当需要同步更改时,跟踪器会完美地报告更改。

问题是:向服务器发送数据是异步的,需要一些时间。在发送数据时,我希望应用程序继续工作,更改表中的更多数据,并让更改跟踪器继续跟踪更改。同步完成后,我调用“tracker.clearChanges()”来删除已同步到服务器的更改。但是调用“tracker.clearChanges()”将清除所有更改,包括在同步期间添加但尚未同步的更改。

如何调用“clearChanges()”并只删除同步的更改?或者如何保留跟踪器在同步发生时记录的更改?

谢谢,

比尔·怀特

最佳答案

好问题。我建议结束之前的更改跟踪器并开始一个新的跟踪器,如下所示:

//  Keeps track of trackers
var curTrackerNbr = 0;
var curTracker = null;
var syncTracker = null;

function getChangeTracker() {
return db.changeTrackers.create("orders_tracker_" + curTrackerNbr, ["orders_table", "invoice_table"]);
}

function beginSync() {
// end current tracking, start new one
syncTracker = curTracker;
syncTracker.endTracking();
// creating a tracker automatically turns it on...
curTracker = getChangeTracker();
// Get data to be sync'd
var syncData = syncTracker.getChangedRows();
// Perform sync
syncDataToServer(syncData, onSyncSuccess, onSyncFailure);
}

function onSyncSuccess() {
// remove the syncTracker (for cleaning purposes)
db.changeTrackers.drop(syncTracker.name);
}

function onSyncFailure() {
if (window.confirm("Want to try again?")) {
var syncData = syncTracker.getChangedRows();
syncDataToServer(syncData, onSyncSuccess, onSyncFailure);
}
}

// Now, let's create our first change tracker.
curTracker = getChangeTracker();

我希望上面的代码能比我的话更好地解释它!

约翰...

关于javascript - 如何保留同步期间发生的 DBChangeTracker 中的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13637424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com