解析服务器:用远程数据更新本地存储的最佳方法是啥
Posted
技术标签:
【中文标题】解析服务器:用远程数据更新本地存储的最佳方法是啥【英文标题】:Parse server : What is the best to update the local storage with the remote data解析服务器:用远程数据更新本地存储的最佳方法是什么 【发布时间】:2016-03-09 10:53:04 【问题描述】:我有一个用例,我必须使用在我的解析服务器中所做的更改来更新本地存储中的一个类。我已经删除了解析服务器中的一些条目,并希望在用户设备上应用程序的本地存储中删除这些条目。处理此问题的最佳方法是什么。目前,我
-
从我的本地存储中取消固定该类的所有对象。
尝试从我的解析服务器获取数据并将它们固定到本地存储。
有没有更好的方法来做到这一点?
【问题讨论】:
【参考方案1】:解析到本地数据存储的 pin 不是作为在设备和服务器之间同步数据的框架,而是作为一种通过提供数据的本地版本来加速您的应用程序的方法,并避免您的应用程序在以下情况下变得不可用设备暂时没有数据连接。因此,没有简化的方式在设备和后端之间同步您的数据。
您可以通过多种方式解决此问题。对于大多数情况,我会说只是取消固定和重新获取是要走的路。在几乎所有其他情况下,您最终都会创建自己的同步服务,这很快就会变得相当复杂。
当然,您可以跟踪自上次同步以来已删除或更改的所有对象,然后仅取消固定/重新获取这些对象,但这对于多个用户来说很难处理。到目前为止,最简单的方法是全部取消固定并再次从服务器获取所有内容。如果这意味着要获取大量对象,您可能需要重新考虑您的逻辑,并且可能不保留那么多本地固定对象。
【讨论】:
如果我删除本地存储中的所有条目然后尝试从服务器获取和更新,我会看到另一个问题。假设,在我的上一个会话中,我想在我的班级中保存一个对象条目,但我没有互联网连接。所以基本上,我在保存新记录时调用了pinInBackground()
和saveEventually()
。现在,在下一个会话中启动应用程序时,我有互联网,我尝试先清除本地存储,然后从服务器获取数据?我在上次会话中创建的对象条目会丢失吗?
是的,处理本地删除是另一个复杂性。但是“pin”和“saveEventually”是两个不同的操作。 saveEventually 保证在连接恢复时远程保存您的对象,即使您可能同时选择取消固定。我自己没有对此进行测试,但我认为您可能会面临 saveEventually 和新提取之间的竞争条件,并且新保存的对象也不会由新提取返回。不过,我不确定。以上是关于解析服务器:用远程数据更新本地存储的最佳方法是啥的主要内容,如果未能解决你的问题,请参考以下文章
在 javascript 中从 .NET/Razor 解析本地化数字的最佳方法是啥?
使用远程服务中的数据刷新简单的 Android Home Widget 的最佳方法是啥?