Backbonejs コレクションには、一括更新のためにコレクションをリセットする機能があります。サーバーからの JSON データと同期するときに Titanium Alloy でこの機能を使用したいのですが、これが SQLite にコミット/保存されていないように見えます - SQL アダプターを使用しています。
config: {
columns: {
// stuff
name: "TEXT"
},
adapter: {
type: "sql",
collection_name: "pony",
db_name: Alloy.CFG.db_name
}
}
失敗し続けるジャスミンテストがいくつかあります。参考までに、コレクションに7つのアイテムを追加する開発用の移行スクリプトを用意して、何か作業できるようにしました。
describe("pony model", function () {
var Alloy = require("alloy")
data = {name: "My little pony"},
collection,
item;
beforeEach(function(){
collection = Alloy.createCollection('pony');
item = Alloy.createModel('pony');
});
// PASSES
it('can reset all data', function () {
collection.fetch();
expect(collection.length).toEqual(7);
collection.reset(data)
expect(collection.length).toEqual(1);
})
// FAILS
it('saves reset data', function () {
collection.fetch();
expect(collection.length).toEqual(7);
collection.reset(data)
collection.fetch()
expect(collection.length).toEqual(1);
})
afterEach(function () {
item.destroy();
});
})
このバグがUIに表示される方法は、サーバーとデータを同期するときにそれを保存すると、TableViewに新しいレコードが表示され、別のビューに移動して同じTableViewに戻ると、同期されたデータがなくなり、デフォルトデータ。