我正在使用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());
第一次同步正常。第二个同步是发送第一组和第二组的所有订单。我只希望它返回第二组。我怎样才能让它返回第二组呢?
答案 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");
请告诉我这是否足够!