Я создал мобильное приложение 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
}
}