Angular5 / Ionic3拦截器离线SQLite响应不起作用

时间:2019-03-19 09:22:54

标签: angular sqlite rxjs ionic3 interceptor

我已经创建了一个Ionic3移动应用程序,现在我正试图使其脱机工作。 为此,我使用HttpInterceptor拦截所有GET&POST服务,并将数据保存在设备上的SQLite DB中(工作正常)。

当我尝试从拦截器中获取数据并将数据返回给调用组件时,就会出现问题。在检测到没有连通性时,我打了一个查询('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
  } 

}

0 个答案:

没有答案