离线使用 nativescript 应用程序和数据库同步

Jar*_*rod 2 sqlite nativescript nativescript-angular

我有一个 NativeScript(angular)应用程序,它当前对服务器进行 API 调用以获取数据。

我想实现一些东西,一旦设备上线但使用我当前的 API 进行双向同步。没有 BaaS。

我想到的第一个解决方案是进行某种缓存。偶尔,应用程序会使数据库中的信息无效并再次获取它。我不喜欢这种方法,因为有很大的列表(可能会改变。它们是分批获取的,即按页。其中之一是下载并存储在设备上的文件列表。所以我必须保留这些仍然在列表中的,并删除那些不在列表中的。这听起来像一场噩梦。

你会如何解决这样的问题?

Raj*_*tak 5

我使用 nativescript-couchebase 插件来存储数据。我们有以下服务

  1. 连通性
  2. 数据
  3. 接口服务

基于连接性是在线/离线,我们可以从远程 API 或通过 couchebase db 获取数据。请注意,API 服务始终仅从 Couchebase 返回数据。

所以在线模式

API 调用 -> 写入数据库 -> 从 Couchebase 返回最新数据

离线模式

读取数据库 -> 从 Couchebase 返回最新数据

与此同时,我们在队列中维护所有 API 调用。因此,无论何时连接返回,API 调用都会按顺序处理。从离线模式进入在线模式时您可能面临的另一个挑战是令牌到期。这个问题可以通过在您上线后向用户显示一个小弹出窗口来解决。