2

我想在我的离子应用程序(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”。

谢谢你的帮助!

4

2 回答 2

1

我正在使用 sql storage 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)));
         }
     }

请记住,我只是根据工作解决方案编写的,但未经测试

于 2018-02-13T18:42:05.703 回答
0

除非您想指定像 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);
  }    
}
于 2017-12-07T20:23:20.893 回答