我想在我的离子应用程序(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”。
感谢您的帮助!
答案 0 :(得分:0)
除非要指定类似于perferred db的设置,否则不需要为存储构造函数提供参数。 以下是在提供程序中使用存储的示例 -
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);
}
}
答案 1 :(得分:0)
我正在使用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)));
}
}
请记住,我刚刚根据工作解决方案编写了这个,但未经过测试