2016-09-04 23 views
0

私は流星反応のアプリを持っており、私はいくつかの情報をローカルに保存する方法も必要です。たとえば、ユーザーがjsonを保存した場合、そのアプリケーションを閉じて後で再度開いても、同じjsonを使用したいと考えています。私はgroundDbを試しましたが、サーバー側も必要です。各ユーザーがゲームレベルなどの情報を保存できるようにするには、この機能が必要です。ネイティブ・バージョンだけでなく、ウェブ上でも使用できるなら、素晴らしいものになるでしょう。ありがとう!ローカルの永続ストレージ

+0

のlocalStorageはちょっと動作しますが、私はドンlocalStorageでJSONを使用する方法を知っている – user2646559

+1

JSONは単なる文字列です。 – zerkms

答えて

1

お店の名前を指定し

localforage.getItem('state') 
    .then(data => /* ... */) 
    .catch(console.error.bind(console)) 

あなたのデータを取得し、ここでの適切な説明があります:

あなたが最初にあなたのオブジェクトリテラル変換する必要がありますグローバルJSONオブジェクトとその文字列化を使用してJSONに変換するTHOD:

let data = {a: 'some', b: 'data', c: null}; 
let json = JSON.stringify(data); 
localStorage.setItem('data', json); 

あなたがデータを取得し、あなたのアプリケーションでそれを使用したい場合は、あなたが戻ってオブジェクトリテラルにJSONをパースする必要があります:「

let json = localStorage.getItem('data'); 
let data = JSON.parse(json); 
0

これは簡単です。オブジェクトをストリング化して文字列にしてから保存します。これをフォロー:のlocalStorageに保存するときに

var dataToStore = JSON.stringify(data); 
localStorage.setItem('someData', dataToStore); 
+0

"JSONをストライプ化する" ---これはほとんど意味がありません。 JSONはすでに文字列です。あなたはおそらく "JSオブジェクト"または "JS配列"を意味するでしょう。 – zerkms

0

あなたはJSONのシリアライズ:

var serializedData = JSON.stringify(data); 
localStorage.setItem('dataKey', serializedData); 

とのlocalStorageから取り出すときにそれをデシリアライズ:それは非常に簡単です

var serializedData = localStorage.getItem('dataKey'); 
var data = JSON.parse(serializedData); 
+0

あなたが書いた内容を真剣に読んでください。「あなたはJSONをシリアル化します」--- JSONは定義上シリアル化されたデータであり、すでにストリングです。 JSONがどんなものであるかについてのこの誤解を広めてください。これは本当に** **最近の問題です。 – zerkms

0

うん。必要なオブジェクトを取り出し、それを文字列化してローカルストレージに格納します。 JSONオブジェクトは文字列オブジェクトであり、sayという文字列ではありません。したがって、ローカルストレージに格納するときはオブジェクトとして格納することはできませんが、json文字列に変換する必要があります。

追加する:localStorage.setItem();取得する :localStorage.getItem();

もう1つの良い方法は、ログイン時にデータを取得し、アレイに格納してからローカルストレージに保存することです。あなたは迷惑メールのデータを持っていませんし、常に最新のものにしています。

クリアするには:localStorage.clear();注:これにより、ローカルストレージ全体がクリアされます。 また、ローカルストレージにはサイズ制限があることに注意してください。ほとんどのブラウザは5〜10MBを許可します。

大量のデータがある場合は、indexedDBを使用することもできます。非常に新しいですが、大量のデータをブラウザに保存する方が優れています。今のところ私はIEが良い実装を持っていると思う。

+0

"JSONオブジェクトは文字列オブジェクトです" ---ああ..... http://benalman.com/news/2010/03/theres-no-suchthing-as-a-json/ – zerkms

+0

ohhh。デバッガを使用してlocalstorageがjsonをどのように格納しているかを確認することもできます。 –

+0

localstorageは文字列化しないと受け入れられますが、問題は発生しません。そうするより良い習慣は? –

0

localForage

我々が使用する一つの選択肢は、localStorageための非同期ストレージ・ラッパーを提供し、あらゆるタイプのデータを保存することができますnpmパッケージlocalforageです。ストアを構成し、ローカルストレージの複数のインスタンスを作成できます。

どのタイプもlocalForageに格納できます。あなたはlocalStorageのような文字列に限定されません。約束(あなたがES6のAPIを使用していない場合は、コールバックを使用することもできます)

を使用して

:あなたは非同期呼び出しを使用する必要が以外localforageの設定

localStorageを使用する場合と似ていますデータを保存する

localforage 
    .setItem(
    'state', data 
) 
    .catch(console.error.bind(console)) 

がpedantsに参加するには

localforage.config({ 
    name: 'myStore' 
}) 

You can read more about localForage here.

関連する問題