當在一個原生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這個外掛程式,在你的NgModule的imports的數組中,將模組注入進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 {}
下面就是資料庫的使用方法: driver 擷取驅動名稱 ready()反應儲存 get(key)擷取對應資料 set(key,value) 設定資料 remove(key)刪除對應資料 clear()清除所有資料 length()擷取資料長度 keys()擷取鍵 forEach(callback) 遍曆資料庫