我正在使用 SequelSphere 为网络应用程序存储数据,并且我正在使用更改跟踪器来跟踪更改。第一次同步时,跟踪器返回更改的行。第二次同步时,跟踪器返回第一组和第二组更改的行。这是我正在做的:
// create my tracker
var tracker = db.changeTrackers.create("order_tracker", ["orders"]);
// insert first set of orders
for (var i = 0; i < firstOrders; ++i)
db.insertRow("orders", firstOrders[i]);
// sync orders up
performSync(db.changeTrackers.get("order_tracker").getChangedRows());
// insert more orders (second set)
for (var i = 0; i < secondOrders; ++i)
db.insertRow("orders", secondOrders[i]);
// sync second set of orders up
performSync(db.changeTrackers.get("order_tracker").getChangedRows());
第一次同步工作正常。第二个同步发送第一组和第二组的所有订单。我只希望它返回第二组。我怎样才能让它只返回第二组?
最佳答案
在此处查找 DBChangeTracker 的 API:SequelSphere API
实际上有两种方法可以回答您的问题:
1) 使用“clearChanges()”方法从您的 DBChangeTracker 中删除所有更改。您可以在同步后立即“按逻辑”执行此操作:
// sync orders up
var tracker = db.changeTrackers.get("order_tracker");
performSync(tracker.getChangedRows());
tracker.clearChanges();
2) 如果数据同步异步发生,结束跟踪并使用第二个更改跟踪器来保存新的更改:
// End first set of changes in tracker, start second
var trackerOne = db.changeTrackers.get("order_tracker");
trackerOne.endTracking();
var trackerTwo = db.changeTrackers.create("order_tracker_2", ["orders"]);
// sync orders up
performSync(tracker.getChangedRows());
// Get rid of first tracker
db.changeTrackers.drop("order_tracker");
让我知道这是否足够!
关于javascript - 如何使用 DBChangeTracker 进行多次同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13636800/