Storage is an easy way to store key/value pairs and JSON objects.Storage uses a variety of storage engines underneath, picking the best one availabledepending on the platform.

When running in a native app context, Storage will prioritize using SQLite, as it's one ofthe most stable and widely used file-based databases, and avoids some of thepitfalls of things like localstorage and IndexedDB, such as the OS deciding to clear out suchdata in low disk-space situations.

When running in the web or as a Progressive Web App, Storage will attempt to useIndexedDB, WebSQL, and localstorage, in that order.

Usage

First, if you'd like to use SQLite, install the cordova-sqlite-storage plugin:

  1. ionic cordova plugin add cordova-sqlite-storage


Next, install the package (comes by default for Ionic apps > Ionic V1):

  1. npm install --save @ionic/storage


Next, add it to the imports list in your NgModule declaration (for example, in src/app/app.module.ts):

  1. import { IonicStorageModule } from '@ionic/storage';
  2. @NgModule({
  3. declarations: [
  4. // ...
  5. ],
  6. imports: [
  7. BrowserModule,
  8. IonicModule.forRoot(MyApp),
  9. IonicStorageModule.forRoot()
  10. ],
  11. bootstrap: [IonicApp],
  12. entryComponents: [
  13. // ...
  14. ],
  15. providers: [
  16. // ...
  17. ]
  18. })
  19. export class AppModule {}


Finally, inject it into any of your components or pages:

  1. import { Storage } from '@ionic/storage';
  2. export class MyApp {
  3. constructor(private storage: Storage) { }
  4. ...
  5. // set a key/value
  6. storage.set('name', 'Max');
  7. // Or to get a key/value pair
  8. storage.get('age').then((val) => {
  9. console.log('Your age is', val);
  10. });
  11. }

Configuring Storage

The Storage engine can be configured both with specific storage engine priorities, or custom configurationoptions to pass to localForage. See the localForage config docs for possible options: https://github.com/localForage/localForage#configuration

Note: Any custom configurations will be merged with the default configuration

  1. import { IonicStorageModule } from '@ionic/storage';
  2. @NgModule({
  3. declarations: [...],
  4. imports: [
  5. IonicStorageModule.forRoot({
  6. name: '__mydb',
  7. driverOrder: ['indexeddb', 'sqlite', 'websql']
  8. })
  9. ],
  10. bootstrap: [...],
  11. entryComponents: [...],
  12. providers: [...]
  13. })
  14. export class AppModule { }

Instance Members

constructor

Create a new Storage instance using the order of drivers and any additional configoptions to pass to LocalForage.

Possible driver options are: ['sqlite', 'indexeddb', 'websql', 'localstorage'] and thedefault is that exact ordering.

driver

Get the name of the driver being used.

clear()

Clear the entire key value store. WARNING: HOT!

Returns: Returns a promise that resolves when the store is cleared

forEach()

Iterate through each key,value pair.

Returns: Returns a promise that resolves when the iteration has finished.

Parameters

  • iteratorCallback
  • a callback of the form (value, key, iterationNumber)

get()

Get the value associated with the given key.

Returns: Returns a promise with the value of the given key

Parameters

  • key

Type: string

  • the key to identify this value

keys()

Returns: Returns a promise that resolves with the keys in the store.

length()

Returns: Returns a promise that resolves with the number of keys stored.

ready()

Reflect the readiness of the store.

Returns: Returns a promise that resolves when the store is ready

remove()

Remove any value associated with this key.

Returns: Returns a promise that resolves when the value is removed

Parameters

  • key

Type: string

  • the key to identify this value

set()

Set the value for the given key.

Returns: Returns a promise that resolves when the key and value are set

Parameters

  • key

Type: string

  • the key to identify this value
value

Type: any

  • the value for this key