如何使用DBChangeTracker进行多个同步?

时间:2012-11-29 23:38:21

标签: javascript html5 synchronization

我正在使用SequelSphere存储webapp的数据,而我正在使用更改跟踪器来跟踪更改。第一次同步时,跟踪器返回更改的行。第二次同步时,跟踪器返回第一组和第二组更改的行。这就是我正在做的事情:

// 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());

第一次同步正常。第二个同步是发送第一组和第二组的所有订单。我只希望它返回第二组。我怎样才能让它返回第二组呢?

1 个答案:

答案 0 :(得分:1)

在此处查看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");

请告诉我这是否足够!