2016-12-24 18 views
0

ionst2でlocalstorageを使用していますが、Chromeとiphoneでローカルに動作しますが、Androidデバイスでは動作しません。Ionic 2 @ ionic/storageがAndroidデバイスで動作しない

データ構造がテーブル構造よりも優れているため、Sqliteを書き直して使用する必要はありません。すべての手がかりは?

CODE

import { Injectable } from '@angular/core'; 
import { Storage } from '@ionic/storage'; 
import { Observable } from 'rxjs/Rx'; 

import { Customer } from '../pages/customer/customer.model' 

@Injectable() 
export class StorageService { 
    constructor(private _storage: Storage) { } 

    setSelectedCustomer(customer: Customer) { 
     return Observable.fromPromise(this._storage.set('selectedCustomer', customer)); 
    } 
} 

バージョン:

"@ionic/storage": "^1.1.7", 
"ionic-angular": "2.0.0-rc.3", 
"ionic-native": "2.2.3", 

おかげ

+0

を試みることができるあなたは、いくつかのコードを提供することができますスニペットとあなたがすでに試したことを説明する? –

+0

質問に答えることができず、投票をクリックするだけの方法を知っているダウズはいつもあります。 – Milad

+0

ありがとう@Milad私はそれを言っているが、それを言っていないと思っていた。 –

答えて

2

それを使用するのは良い考えではありませんimportaを保存するlocalStorageハイブリッドアプリのデータを扱うことができます。アンドロイドとiOSの問題については、あまりにも多くの報告がありました。一般に、不適切なデータ型の処理が原因です。例としていくつかのオブジェクトを保存しようとしていますが、クロムとアンドロイドは異なる方法でシリアル化できます。

this._storage.set('selectedCustomer', JSON.stringify(customer)) 

そしてJSON.parse まだ残っているthis articleで述べた問題使用してJSON文字列から、あなたのオブジェクトを解析:だから次のように手動で行う方が良いです。だから、(SQLiteのような)ユーザーデータの格納に、より堅牢なものを使用することをお勧めし

また、あなたがリレーショナル表にJSONから構造を変更したくない場合は、LokiJS

+0

他のNoSQLの代わりに、CouchbaseやPouchDBのようなものを見ることができます。 Couchbase + Ionic 2に関する記事は次のとおりです。https://blog.couchbase.com/2016/december/data-synchronization-with-couchbase-in-ionic-2-hybrid-mobile-apps – Hod

0

私はこのようにそれを使用し、その作業罰金

this._storage.set('selectedCustomer', JSON.stringify(customer)); 

this._storage.get('selectedCustomer').then((selectedCustomer) => { 
    let json_selectedCustomer = JSON.parse(selectedCustomer); 
    }); 
+0

あなたは約束を使用しており、私は約束からObservableに変換しています。私はそれが問題だとは思わない。 –

+0

私は、キー/値としてストレージを使用しているときは、値を文字列として送信する必要があることを言及したいと思います。 –

関連する問題