跨应用程序重新启动在本地存储中保留JSONStore数据?

时间:2013-02-26 12:06:58

标签: cordova ibm-mobilefirst jsonstore

JSONStore为我们提供了一种与服务器同步数据的好方法,并跟踪用户在离线时所做的更改。但是,由于JSONStore数据仅在内存中,因此如果用户停止应用程序或重新启动其设备,则任何更改都将丢失。

看起来Cordova存储API可能是解决方案的一部分,但我没有看到一种明确的方式,我们可以使用它来持久化并检索JSONStore数据。

3 个答案:

答案 0 :(得分:3)

  

JSONStore数据仅在内存中。

这是不正确的,除非你在谈论另一个JSONStore。除非从设备上卸载应用程序或致电:destroyremoveeraseremoveCollection,否则数据将被保留。有关更多详细信息,请查看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方法:initCollectionaddfindAll

  

也许有一种方法我们应该检查现有数据,所以我们不这样做   擦掉它?

您可以调用count来查看JSONStore集合中的数据量。

如果您想从后端获取数据,则需要创建Worklight Adapter并将其链接到您的收藏集,然后需要致电load。要将数据发送回您的后端,您可以拨打pushGetting 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中提供。