在混合应用程序开发中使用本地存储作为 "Local Database" - 危险还是有用?

Using Local Storage in Hybrid App Development as a "Local Database" - Dangerous or Useful?

我正在构建一个混合应用程序 (Ionic),只需要 local storage 来保存我的数据库对象。

该应用程序仅允许您存储、编辑和查看简单的 Notes

现在,显然我需要确保当用户保存笔记时,它仍然存储在他的 phone 上。

我的问题是,在这种情况下使用 window.localstorage 有什么危险吗? 此外,在哪些情况下用户会丢失其所有数据? 一个明显的情况是当他删除并重新安装该应用程序时。

如果本地存储不是可行的方法,还有哪些其他方法(或者它总是需要服务器端解决方案)?

本地存储确实是一种在 Cordova 应用程序中存储数据的简单方法。 正如 JohnAndrews 所指出的,如果用户清理应用程序数据,所有数据都可能丢失。 除此之外,LocalStorage 存在一些限制:

  • 对于键值对来说非常方便,但很难存储复杂的数据
  • 您不能"query"您的数据
  • 如果您在移动应用上使用超过 1 个网络视图,您需要 HTML5 内容来自同一域,否则 LocalStorage 数据将不会跨网络视图共享。

如果您想了解有关 Ionic (Cordova) 应用程序数据存储可能性的更多信息,请查看他们的官方文档 http://cordova.apache.org/docs/en/4.0.0/cordova_storage_storage.md.html

我发现在使用 localStorage(在我的例子中)时存在一些严重的限制,包括:

  • 存储限制(~5MB)取决于浏览器(for more info here
  • 只存储字符串,所以你最终会转换成 json (JSON.stringify) 并通过 json object
  • 查询
  • 一旦移动存储空间满了,就会强制清空存储空间中的所有数据

我最终在寻找新的候选人(sqlite 看起来很有前途,但 iOS 10 有一些问题) 另一方面,如果您的应用程序存储少量数据或主要与在线数据库进行交易。 localStorage 看起来不错

  • 易于使用,已适用于大多数浏览器
  • Json 像 NoSQL
  • 一样工作