【问题标题】:Ionic 2 data reload when network isn't present网络不存在时 Ionic 2 数据重新加载
【发布时间】:2017-11-05 00:06:06
【问题描述】:

我只是想知道这是否可行以及如何实现。

假设一个 Android 用户有一个网络连接并进行了更改,然后更新了数据库。然后用户失去网络连接,但仍然在他们的设备上进行更改。他们显然不能在没有连接的情况下将数据发送到数据库。

但是当他们再次收到连接时,他们在没有连接时所做的更改会自动更新并发送到数据库。我将如何使用 Ionic 2 框架做这样的事情?请指出正确的方向。

谢谢!

【问题讨论】:

    标签: javascript android angular ionic-framework ionic2


    【解决方案1】:

    是的,这是可能的。

    为此,您需要SQLite。最好做一个 SQLite 服务。


    在第一阶段,最重要的是将数据保存到离线/本地数据库。在这种情况下,这是 SQlite。

    当没有网络连接并且用户进行一些操作时,将数据保存到在您的 SQlite 数据库中创建的表中。

     finishFunction(){
       if(this._connectivityService.isOnline()){ 
         //Send data directly to external database
          this._api.sendData(this.parameters).subscribe(res => {
        }); 
       } else {
        //Store data in offline SQLite database
        this._database.myOfflineTable(this.parameters);
       }
     }
    

    之后,在应用主页检查网络连接何时可用,并调用通过 API 将本地/离线数据发送到外部数据库的函数。当 API 返回成功消息时,您可以清空离线表。

    sendMyOfflineData(){
         this._database.getOfflineTable().then((result) => {
                this.OfflineTableList = <Array<Object>> result;
                if(this.OfflineTable.length != 0){
                for(var i = 0; i < this.OfflineTable.length; i++){
                  this._api.sendData(this.OfflineTable[i]).subscribe(res => {
                  if(res.status == true){
                     this._database.deleteOfflineTable();
                  }
             }); 
                }}
            }, (error) => {
                console.log("ERROR: ", error);
            });
       }
    

    如果您需要更多详细信息,我在这里。

    【讨论】:

    • 感谢您的回答!问题..这可以用普通的 MySQL 数据库完成吗?
    • 据我所知,在 Ionic 应用程序中,不幸的是不能。但是使用 SQLite,您可以复制您的 MySQL 数据库表并通过 API 进行同步。
    猜你喜欢
    • 2021-03-21
    • 1970-01-01
    • 2019-11-12
    • 2011-07-02
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    相关资源
    最近更新 更多