IONIC 3 новое локальное хранилище
Я хочу создать новое локальное хранилище в моем ионном приложении (IONIC 3), но я искал много способов сделать это. В настоящее время у меня есть это:
database.ts (мой провайдер)
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Storage } from '@ionic/storage';
@Injectable()
export class DatabaseProvider {
localData: Storage;
constructor(public http: HttpClient) {
this.localData = new Storage(localStorage);
}
}
но IDE сказала мне, что это ошибка в строке "this.localData = new Storage (localStorage);", возможно, она требует специального импорта. Я установил "@ionic/storage": "2.1.3".
Спасибо за вашу помощь!
2 ответа
Я использую хранилище SQL 2.2 и до сих пор у меня не было проблем
Установить как
ionic cordova plugin add cordova-sqlite-storage
затем
npm install --save @ionic/storage
Что касается документации Ionic Storage, вам необходимо добавить службу хранения в ваш модуль.
import { IonicStorageModule } from '@ionic/storage';
@NgModule({
declarations: [
// ...
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
IonicStorageModule.forRoot()<---------- THIS
],
bootstrap: [IonicApp],
entryComponents: [
// ...
],
providers: [
// ...
]
})
export class AppModule {}
тогда вы могли бы использовать это так
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import {Observable} from "rxjs/Observable";
import 'rxjs/add/observable/fromPromise';
import { Storage } from '@ionic/storage';
@Injectable()
export class DatabaseProvider {
constructor(public http: HttpClient, private _storage:Storage) {
}
getData(keyName:string):Observable<any> {
return Observable.fromPromise(this._storage.get('keyName'));
}
setData(keyName:string,data:any):Observable<any>{
return Observable.fromPromise(this._storage.set(keyName,JSON.stringify(data)));
}
}
Пожалуйста, имейте в виду, я просто написал это на основе рабочего решения, но это не проверено
Вам не нужно указывать аргумент для конструктора хранилища, если вы не хотите указывать настройки, такие как perferred db. Вот пример использования хранилища в
LocalNotes.ts
import {Injectable} from '@angular/core';
import {Storage} from '@ionic/storage';
@Injectable()
export class LocalNotes {
local:any;
constructor() {
this.local = new Storage();
}
getNotes() {
return new Promise((resolve, reject)=> {
this.local.get('userNotes')
.then((answer)=> {
resolve(answer);
})
.catch((err) => {
reject(err);
});
});
}
setNotes(notes:string[]) {
this.local.set('userNotes', notes);
}
}