我想将我的应用从使用本地SQLite迁移到Parse。
我猜测最好的入门方法是构建一个迁移机制,将当前用户数据从SQLite数据库传输到Parse。有没有建立这样做的机制?
我还不确定的其他事项:因为我们希望该应用适用于选择创建帐户的用户以及选择不使用(并且在没有网络连接时)的用户有意义的是(a)启用本地数据存储和(b)使所有保存调用最终保存?从我可以告诉读取文档,saveEventually将数据保存(固定)到本地数据存储,直到可以保存到服务器。
另一个问题是:如果用户离线使用该应用程序(选择不创建帐户),但稍后决定签名,是否可以将脱机操作时创建的所有先前数据与其新帐户相关联?例如,假设Joe下载应用程序并选择不签名,并将该应用程序脱机使用6个月。然后Joe意识到他需要获得一个新设备,所以他决定签名以保存他的数据。当他注册时,他在6个月内创建的数据现在会与他的新帐户相关联吗?
非常感谢任何反馈。
答案 0 :(得分:0)
自从提出这个问题以来,我们已经制定了一个计划。任何反馈都将非常感激。
我们打算做的是:(a)将我们的sqlite数据库迁移到解析本地数据存储区(引脚)。我们不会使用saveEventually
,而是使用pinInBackground:
,将所有对象固定到特定组并将标志isDraft
(或类似的东西)设置为true。然后,此标志允许我们访问仍需要同步到parse.com的那些对象。然后,当应用程序关闭时,我们将启动应用程序中的后台任务,从该组中提取那些仍然是草稿的固定对象,将其isDraft
标志设置为false,然后将它们发送到解析.COM。如果保存错误,请将isDraft
标志重置为true,以便在下次同步尝试时我们再次尝试使用该对象。
我们从parse.com提供的todos tutorial派生了此迁移。我相信这会奏效。我唯一关心的是我们有超过15k的用户。如果他们都试图同时这样做,我相当肯定我们会达到api请求上限(15k用户*在100到1000个db对象之间的任何地方)。但是,这可能不是一个大问题,因为我们将依赖客户端上的本地固定对象来填充客户端,并且当客户端被告知过期错误时,它将无声地失败并且{{1} } flag将重置为true,确保在下一个应用程序关闭时再次尝试失败的对象。
任何人都有更好的解决方案吗?或者改进这个?我还没有找到关于这个过程的更多信息,但我确信其他人可能会对此感到好奇。我们不能成为唯一试图采取行动的人。