0

JSONStore は、データをサーバーと同期し、オフライン中にユーザーが行った変更を追跡する優れた方法を提供してくれます。ただし、JSONStore データはメモリ内にのみあるため、ユーザーがアプリケーションを停止したり、デバイスを再起動したりすると、すべての変更が失われます。

Cordova ストレージ API がソリューションの一部である可能性がありますが、それを使用して JSONStore データを永続化および取得する明確な方法がわかりません。

4

3 に答える 3

3

JSONStore データはメモリー内のみです。

別の JSONStore について話している場合を除き、これは正しくありません。アプリケーションがデバイスからアンインストールされるか、 destroyremoveeraseまたはremoveCollectionへの呼び出しがない限り、データは永続化されます。詳細については、入門モジュール(7.9、7.10、7.11、および 7.12) とIBM InfoCenter の資料を参照してください。

次のコード スニペットを試してください。

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 アダプターを作成してコレクションにリンクし、 loadを呼び出す必要があります。データをバックエンドに送り返すには、pushを呼び出します。これは、入門モジュール、具体的にはModule 7.11 - JSONStore with Synchronizationでよりよく説明されています。

ondeviceready補足として、イベントが発生した後に必ず JSONStore を呼び出してください。関数内で JSONStore 呼び出しを行っても安全ですwlCommonInit。Android または iOS プラットフォーム (デバイスまたはエミュレーター/シミュレーター) でテストしてください。Mobile Browser Simulator や Web ブラウザーでは機能しません。

于 2013-02-27T04:30:12.603 に答える
2

JSONStore は、デバイスのローカル ストレージにファイルとして保存されます。JSONStore は永続的です。

于 2013-02-26T14:04:42.867 に答える
-3

PhoneGap Storageを見てください。これらのメソッドはすべて、Cordova ライブラリーを介して Worklight で使用できるはずです。

于 2013-02-26T12:40:23.853 に答える