Не работает ответ перехватчика Angular5 / Ionic3 на SQLite - PullRequest
0 голосов
/ 19 марта 2019

Я создал мобильное приложение Ionic3 и теперь пытаюсь заставить его работать в автономном режиме.Для этого я использую HttpInterceptor для перехвата всех сервисов GET & POST и сохранения данных в БД SQLite на устройстве (работает нормально).

Проблема возникает, когда я пытаюсь получить и вернуть данные обратно вызывающему компоненту от перехватчика.При обнаружении отсутствия подключения я нажимаю запрос ( 'SELECT * FROM offline WHERE URL =?' ), чтобы получить данные GET, уже сохраненные в БД.Я могу утешить данные, но не могу вернуть их вызывающему компоненту.Я пытался вернуть данные, но они не работают.

Ниже приведен мой код перехватчика, приветствуются любые рекомендации или помощь в отношении того же самого.

if(this.network.type == 'none' || this.network.type == 'unknown'){
console.log("NO Network !!");

// return next.handle(req).do((event: HttpEvent<any>) => {
  if(req.method == 'GET'){    
    let data;
    console.log("OFFLINE GET URL ", req.url);
    this.db.executeSql('SELECT * FROM offline WHERE URL = ? ', [req.url])
      .then( (data) => {
        this.offlineData = [];
        for(var i=0; i < data.rows.length; i++) {
          this.offlineData.push({id: data.rows.item(i).ID, Type: data.rows.item(i).TYPE, URL: data.rows.item(i).URL, Data: data.rows.item(i).DATA, Priority: data.rows.item(i).PRIORITY})
          if(this.offlineData[i].Data !== null && this.offlineData[i].Data !== undefined && this.offlineData[i].Data !== 'undefined'){
            this.offlineData[i].Data  = JSON.parse(this.offlineData[i].Data);
          }
        }
        data = this.offlineData[0].Data;
        // return this.offlineData[0].Data;
        return (data instanceof Observable) ? data : Observable.of(data.clone());
      })
      .catch((e) => {
        console.log('OFFLINE DATA 2 ERROR', e);
      });   

      // return (data instanceof Observable) ? data : Observable.of(data.clone());
  } else if(req.method == 'POST'){
    // Do Something
  } 

}

...