我正在使用带有ionic2的localstorage,它在chrome和iphone上本地工作,但似乎不适用于Android设备。
我真的不想重写和使用Sqlite,因为我的数据比表结构更适合json结构。有线索吗?
代码
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 :(得分:2)
使用localStorage在混合应用程序中保存重要数据并不是一个好主意。有关Android上的问题的报道太多,有时在iOS上。通常它是由不正确的数据类型处理引起的。例如,你试图保存一些对象,但在chrome和android中可以以不同方式序列化。因此最好手动完成:
this._storage.set('selectedCustomer', JSON.stringify(customer))
然后使用JSON.parse
从json字符串解析对象
this article中提到的问题仍然存在。因此,最好使用更健壮的东西来存储用户数据(如SQLite)
另外,如果您不想将结构从json更改为关系表,可以尝试LokiJS
答案 1 :(得分:0)
我像这样使用它并且工作正常
this._storage.set('selectedCustomer', JSON.stringify(customer));
this._storage.get('selectedCustomer').then((selectedCustomer) => {
let json_selectedCustomer = JSON.parse(selectedCustomer);
});