Ionic 2 @ ionic / storage无法在Android设备上运行

时间:2016-12-24 21:00:16

标签: angular ionic2

我正在使用带有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",

由于

2 个答案:

答案 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);
    });