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);
  }    
}
Другие вопросы по тегам