Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting multiple key values from Ionic2 storage

Using Ionic2 storage, I have done the following in a custom provider, I can confirm that the key-value pairs are set and I can retrieve them individually:

this.storage.set('one', 1);
this.storage.set('two', 2);
this.storage.set('three', 3);

The problem is I have a function in one of my pages that needs to access all three of these values for an HTTP request, so I can get one of them like this:

this.storage.get('one').then((value) => {
    // Preform http request sending value in POST data
});

But how do I get multiple key values all at once? Do I need to nest these calls, or is there a simpler way to access multiple keys in one call, so that I can do something like:

this.storage.get(['one', 'two', 'three']).then((values) => {
    console.log(values.one); // I dunno, something like this
});
like image 620
capcom Avatar asked Apr 13 '17 15:04

capcom


2 Answers

I used Promise.all for this purpose

Promise.all([this.storage.get("email"), this.storage.get("username")]).then(values => {

      console.log("email", values[0]);
      console.log("username", values[1]);

      // every other thing can happen here e.g call a method

});
like image 191
Victor Ejiogu Avatar answered Oct 04 '22 22:10

Victor Ejiogu


You can simply do it as shown below.

this.storage.forEach( (value, key, index) => {
    console.log("value", value);//store these values as you wish
    console.log("key", key);
    console.log("Index" index);
})

From Api Doc.

 /**
   * Iterate through each key,value pair.
   * @param iteratorCallback a callback of the form (value, key, iterationNumber)
   * @return Promise that resolves when the iteration has finished.
   */

  forEach(iteratorCallback: (value: any, key: string, iterationNumber: Number) => any): Promise<null> {
    return this._dbPromise.then(db => db.iterate(iteratorCallback));
  }
like image 24
Sampath Avatar answered Oct 04 '22 21:10

Sampath