2

我正在使用 SequelSphere 来存储 web 应用程序的数据,并且我正在使用更改跟踪器来跟踪更改。第一次同步时,跟踪器会返回更改的行。第二次同步时,跟踪器返回第一组和第二组更改的行。这是我正在做的事情:

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

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

4

1 回答 1

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");

让我知道这是否足够!

于 2012-11-30T15:49:05.973 回答