我正在使用 AngularJS 开始我的第一个 PhoneGap 项目。它是一个数据库驱动的应用程序,使用 REST API 作为后端。首先,我根本不打算在本地存储数据,所以如果没有 Internet,它不会做太多事情。
但是,我最终希望它在本地存储数据,并在互联网可用时同步,因为我知道我个人有时会禁用手机上的互联网连接(飞机,电池电量不足),或者没有网。我想知道您是否可以为我指出一些用于此类同步的好资源。一些推荐的图书馆?或者也许是一些关于陷阱以及如何绕过它们的讨论。我用谷歌搜索了一下,但我想现在,我不知道要问什么问题。
另外,我打算先建立它依赖于互联网,然后添加同步....这是个好主意,还是我在自找麻烦?我需要从一开始就同步构建它吗?
我有人建议首先将应用程序构建为仅限本地,而不是首先构建仅限 Internet 的部分,这有一定的逻辑。远程存储对我来说很重要。我知道那里的决定与我的应用程序目标有很大关系,但从构建它的角度来看,最终目标是本地存储 + 互联网存储和双向同步,什么会更容易?或者它甚至有什么不同?
首先,我正在考虑使用 UUID,而不是顺序整数主键。我还考虑过为每个设备分配一个 ID,该 ID 以它生成的任何键为前缀,但这似乎很微妙。有人用过这两种技术吗?想法?
我想我需要一个好的系统来判断哪些数据已被同步。在客户端,我猜任何创建/编辑的记录都可以标记为同步。但是在服务器端,你有多个客户端,所以这是行不通的。我猜你可能有一个 last_updated 时间戳,并同步所有更新的同步最后一次成功的同步。
在多个地方编辑的记录呢?如果两个客户端编辑,然后想要同步,您对合并有一些歧义,例如在 git 或其他版本控制系统中合并分支时。你怎么处理?我猜 git 通过存储每个提交的差异来做到这一点。我猜你可以存储差异?我想得越多,听起来就越复杂。我是想多了还是想得太少了?
客户端存储呢?我考虑过 SQLite,或者 PhoneGap 本地存储的东西(http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html)。建议?同步将通过 REST API 进行,交换 JSON,所以我认为将数据实际存储为 JSON 的东西,或者易于转换的类似 JSON 的东西会很好。另一方面,如果我必须交换某种数据差异格式,也许这就是我需要存储的内容?