在数据库和PhoneGap应用程序之间同步列表数据的最佳实践

时间:2015-10-23 09:32:13

标签: cordova local-storage hybrid-mobile-app wcf-rest data-synchronization

方案

我有以下构成检验样式应用程序的组件

  • Web应用程序(计划新检查并更新/删除计划检查,直到它们被发送到设备)
  • 数据库(存储预定检查)
  • WCF Restful service (根据请求返回设备用户的最新日程安排数据)
  • PhoneGap应用程序(显示设备用户的预定检查列表,将WCF服务返回的数据存储在本地存储中)

首先,网络用户为移动用户安排新的检查并将其保存到数据库。设备用户将登录移动应用程序并刷新其计划列表,以便返回最新的计划项目并显示给他们。然后,Web用户可以随时创建/更新/删除检查。

问题

每次设备用户刷新其计划列表时,将返回所有计划数据并将其添加到本地存储。这意味着将创建重复项,因为某些数据可能已经在设备上。

决议

为了防止重复发生,我将向数据库添加一个额外的字段,将项目标记为“app by app”,以便下次设备用户刷新其计划列表时可以忽略标记的项目,并停止Web用户更新或删除它们。

此决议的漏洞

  1. 如果我在返回列表时在Web服务中将项目标记为“由app接收”,则从WCF服务返回数据与接收它的设备之间可能存在错误,这意味着它从未到达设备。这可能导致项目被标记为“在设备上”而不是。
  2. 或者,如果我选择等到设备收到列表然后将消息发送回数据库以说明设备已收到项目,则由于没有互联网连接,此消息可能不会立即发送。这意味着门户网站用户可以更新/删除用户的计划项目,即使它在他们的设备上也是如此。
  3. 我的问题

    我想知道是否有人有一个有效的解决方案来管理这个漏洞,或者我是否应该改变方案中的任何步骤来开始阻止这个漏洞出现?

1 个答案:

答案 0 :(得分:2)

您可以使用时间戳检查上次更新本地存储的时间。对于数据库的每个请求,您可以将本地存储时间戳与数据库时间戳进行比较,并仅获取在时间戳之后创建的那些时间戳。