Используя IONIC Storage Service, как получить и вернуть сохраненные данные JSON? - PullRequest
0 голосов
/ 29 сентября 2018

Я новичок в Ionic.

Я могу сохранить объект JSON (данные) с помощью IONIC Storage Service;однако, когда я пытаюсь получить данные JSON, я получаю неопределенное значение.

Я ценю любую помощь по этому вопросу - ниже приведен мой код:

Поставщик: storage-service.ts: I'mмогу хранить и выводить данные, но я не могу вернуть данные:

import {Injectable} from '@angular/core';
import { Storage } from '@ionic/storage';

@Injectable()
export class StorageService {

constructor(public storage: Storage){}

public storeData (data) {
    this.storage.set('data', data);
}

public getStoredData() {
         this.storage.get('data').then((val) => {
        console.dir(val);  //****** this outputs the object.
        return val;  //***** this returns undefined
        });
  }
 }

my-page.ts:

import {StorageService} from "../../providers/storage-service";

constructor(public storageService: StorageService) {

    //***** this outputs undefined, what I'm doing wrong?
    console.dir(this.storageService.getStoredData());
}

Любая помощь по этому вопросу очень приветствуется.

Спасибо

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Поскольку хранилище Ionic основано на обещаниях, вам необходимо вернуть это обещание в службе:

public getStoredData() {
  return this.storage.get('data').then((val) => { // <-- Here!
    console.dir(val);
    return val;
  });
}

, а также использовать then, чтобы получить значение на своей странице

import { StorageService } from "../../providers/storage-service";

constructor(public storageService: StorageService) {

  this.storageService.getStoredData().then(data => {
    console.dir(data); // <-- Like this!
  });

}

Здесь вы можете найти дополнительную информацию о том, как использовать обещания.

0 голосов
/ 29 сентября 2018

Вам необходимо вернуть

public getStoredData() {
  return this.storage.get('data').then((val) => {
           return val;  
   });
  }
 }
...