JSONStore为我们提供了一种与服务器同步数据的好方法,并跟踪用户在离线时所做的更改。但是,由于JSONStore数据仅在内存中,因此如果用户停止应用程序或重新启动其设备,则任何更改都将丢失。
看起来Cordova存储API可能是解决方案的一部分,但我没有看到一种明确的方式,我们可以使用它来持久化并检索JSONStore数据。
答案 0 :(得分:3)
JSONStore数据仅在内存中。
这是不正确的,除非你在谈论另一个JSONStore。除非从设备上卸载应用程序或致电:destroy,remove,erase或removeCollection,否则数据将被保留。有关更多详细信息,请查看Getting Started Modules(7.9,7.10,7.11和7.12)和IBM InfoCenter documentation。
请尝试以下代码段:
var c = WL.JSONStore.initCollection('customers', {name: 'string'}, {onSuccess: function(){
c.add({name: 'helloworld'}, {onSuccess: function(){
c.findAll({onSuccess: function (res) {
console.log(JSON.stringify(res));
}})
}});
}});
为简洁起见,我省略了故障回调。每次运行应用程序时,它都会存储一个新的'helloworld'文档。您可以重新启动应用程序,数据仍然存在。您可以详细了解我在此处使用的API方法:initCollection,add,findAll。
也许有一种方法我们应该检查现有数据,所以我们不这样做 擦掉它?
您可以调用count来查看JSONStore集合中的数据量。
如果您想从后端获取数据,则需要创建Worklight Adapter并将其链接到您的收藏集,然后需要致电load。要将数据发送回您的后端,您可以拨打push。 Getting Started Modules更好地解释了这一点,特别是:Module 7.11 - JSONStore with Synchronization。
作为旁注,请确保在ondeviceready
事件触发后调用JSONStore。在wlCommonInit
函数内部进行JSONStore调用是安全的。确保您在Android或iOS平台(设备或模拟器/模拟器)上进行测试。它不适用于移动浏览器模拟器或任何Web浏览器。
答案 1 :(得分:2)
JSONStore保存为设备本地存储中的文件。 JSONStore是持久的。
答案 2 :(得分:-3)
看看PhoneGap Storage。所有这些方法都应该通过Cordova库在Worklight中提供。