Ionic2的数据存储

时间:2021-02-04 23:01:03

当在一个原生app词法环境下,一般优先使用SQLite,因为它是使用最广泛的稳定的文档型数据库之一,它也避免了一些诸如localstorage和IndexedDB的一些困境,比如系统在磁盘空间不够的时候会清除数据。

如果你是在web中或者web app中运行的话,一般倾向于使用IndexedDB,WebSQL,以及localstorage.

假如你使用的是SQLite,首先你得安装 cordova-sqlite-storage 插件。

cordova plugin add cordova-sqlite-storage --save

然后npm按照包:

npm install --save @ionic/storage

之后import这个插件,在你的NgModuleimports的数组中,将模块注入进app里。

下面就是一个实例:

import { IonicStorageModule } from '@ionic/storage';

@NgModule({
declarations: [
// ...
],
imports: [
IonicModule.forRoot(MyApp),
IonicStorageModule.forRoot() //就这里
],
bootstrap: [IonicApp],
entryComponents: [
// ...
],
providers: []
})
export class AppModule {}

这样,你如果在那个component中需要使用数据库的时候你就可以通过import进行注入:

import { Storage } from '@ionic/storage';

export class MyApp {
constructor(storage: Storage) {

storage.ready().then(() => {

// set a key/value
storage.set('name', 'Max');

// Or to get a key/value pair
storage.get('age').then((val) => {
console.log('Your age is', val);
})
})
;
}
}

配置存储

开发者可以使定义好的存储引擎优先级配置存储引擎,或者自定义配置选项到localForage上。

注意:任何自定义的配置都会被合并到默认配置上。

import { IonicStorageModule } from '@ionic/storage';

@NgModule({
declarations: ...,
imports: [
IonicStorageModule.forRoot({
name: '__mydb',
driverOrder: ['indexeddb', 'sqlite', 'websql']
})
],
bootstrap: ...,
entryComponents: ...,
providers: []
})
export class AppModule {}

下面就是数据库的使用方法:

  1. driver 获取驱动名称
  2. ready()反应存储
  3. get(key)获取对应数据
  4. set(key,value) 设置数据
  5. remove(key)删除对应数据
  6. clear()清除所有数据
  7. length()获取数据长度
  8. keys()获取键
  9. forEach(callback) 遍历数据库