2016-10-03 104 views
1

是否有案件的任何模式时的东西(在我的情况下,它是一个过滤器)存储在客户端(例如localStorage),你需要为每个用户/版一次运行一个脚本来迁移您存储数据。例如,最初有一些时候你决定,你需要单独的每个环境的过滤器后的一个关键myFilter保存在localStorage过滤器,所以你需要单独dev-myFiltertrain-myFilter,等你更新你的代码与环境相关滤波器的工作,但有些用户拥有旧的myFilter,并且您希望在下一个部署的版本中运行脚本,该脚本将更新保存的过滤器的密钥(如果有)。JS“升级”模式

的问题是 - 什么是该模式/最佳做法?

+0

如果数据不稳定,那么它可能是谨慎的不使用localStorage .. – Pogrindis

+0

@Pogrindis我使用Redux和初始状态它检查localStorage并使用它,如果有设置。为什么谨慎使用localStorage? –

回答

1

我不知道“最佳做法”,但明显的技术解决方案,就像任何API或存储格式,是存储旁边的数据版本号。如果您从一开始就没有这样做,那么在缺席时假设版本== 1。

如果数据结构是,那么您可能可以避免这种情况,所以只有在通过检查才能确定版本的版本之间是唯一的。

无论哪种方式,您只需每当你发现用户的数据是旧的格式进行翻译。

这样做的缺点是,你必须继续检查;对于Web应用程序来说,这不太可能成为瓶颈,但是如果您可以从一开始就使数据向前兼容,那么您可以在每个请求上节省一点处理时间。但是为了使数据有用,你必须阅读它,所以只要你希望保持向后兼容性,一点分支也不会是一个大问题。

+0

我不喜欢每次运行检查,除了可能有版本差异+版本控制的几个数据结构之外,它会变得混乱。我正在考虑指定一个单独的文件 - 对于此版本,我们运行此脚本将相应地转换数据,但当用户错过某些升级并且无法直接从v1升级到v8时仍然存在问题 - 您需要做一步一步,所以必须每次运行这些检查:( –