Ionic 4 хранит форматы данных и синхронизирует при подключении к интернету - PullRequest
0 голосов
/ 11 октября 2019

У меня есть приложение, в котором мне нужно поймать собак в автономном режиме. Я использовал formdata , потому что я отправляю изображения вместе с оставшимися данными. Я использую приведенный ниже код для хранения HTTP-запроса.

storeRequest(url, type, data) {
   this.sharedService.presentToast('Your data is stored locally because you 
   seem to be offline.');

   let action: StoredRequest = {
      url: url,
      type: type,
      data: data,
      time: new Date().getTime(),
      id: Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5)
   };

   return this.storage.get(STORAGE_REQ_KEY).then(storedOperations => {
      let storedObj = JSON.parse(storedOperations);

      if (storedObj) {
          storedObj.push(action);
      } else {
          storedObj = [action];
      }

      return this.storage.set(STORAGE_REQ_KEY, JSON.stringify(storedObj));
    });
 }

Здесь я храню все запросы. Когда я пытаюсь получить данные, я получаю пустой объект. Вот почему я не могу синхронизировать данные с сервером. Я использовал приведенный ниже код для синхронизации запросов.

checkForEvents(): Observable<any> {
return from(this.storage.get(STORAGE_REQ_KEY)).pipe(
  switchMap((storedOperations: any) => {
    let storedObj = JSON.parse(storedOperations);
    console.log(storedObj);
    if (storedObj && storedObj.length > 0) {
      console.log(storedObj);
      return this.sendRequests(storedObj).pipe(
        finalize(() => {
          this.sharedService.presentToast('Local data succesfully synced to 
          API!');
          this.storage.remove(STORAGE_REQ_KEY);
        })
      );
    } else {
      console.log('no local events to sync');
      return of(false);
    }
  })
)
}

** Правка - ** Теперь мой вопрос: что является хорошей практикой для хранения данных ?? Где мы можем хранить данные формы ??

1 Ответ

0 голосов
/ 11 октября 2019

вы можете слушать окно Онлайн и офлайн события и выполнять свои действия, например.

window.addEventListener('online',  ()=>{
//save your data
});
...