2016-12-24 16 views
0

Я использую localstorage с ionic2, который работает локально в хроме и на iphone, но, похоже, не работает на устройстве Android.Ionic 2 @ ionic/storage не работает на устройстве 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

Можете ли вы предоставить код фрагменты и объяснить, что вы уже пробовали? –

+0

Всегда есть какие-то douches, у которых нет ответа на вопрос, и просто знаете, как нажать на голосование. – Milad

+0

Спасибо @Milad Я думал об этом, но не сказал об этом. –

ответ

2

Это не очень хорошая идея использовать localStorage для сохранения импорта nt в гибридных приложениях. Слишком много сообщений о проблемах в Android и иногда в iOS. Как правило, это было вызвано неправильной обработкой данных. В качестве примера вы пытаетесь сохранить некоторый объект, но в chrome и android можно сериализовать по-разному. Так что лучше делать это вручную, как:

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

А затем разобрать ваш объект из JSON строку с помощью JSON.parse Проблема, которая упоминается в this article по-прежнему остается. Так что лучше использовать что-то более надежные для хранения пользовательских данных (например, 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

Вы используете обещание, и я перехожу к наблюдаемому из обещания. Я не думаю, что это проблема. –

+0

Я хотел упомянуть, что когда вы используете хранилище в качестве ключа/значения, вы должны отправить значение в виде строки. –

Смежные вопросы