【问题标题】:Why doesn't Apache Cordova support databases bigger than 50 MB?为什么 Apache Cordova 不支持大于 50 MB 的数据库?
【发布时间】:2017-08-31 01:37:06
【问题描述】:

offical Apache Cordova documentation 描述了 3 种存储数据的方式:

  1. 本地存储
  2. WebSQL
  3. 索引数据库

对于任何需要真实数据库的应用程序,LocalStorage 是没有选择的:

【LocalStorage】只存储字符串,所以复杂的数据结构要序列化,只能存储可以序列化的数据。

WebSQL 缺乏大型数据库的可能性,尽管我个人的经验表明它们的大小通常被限制在 50MB 以内。

总存储量有限(通常约为 5MB)。

IndexedDB 缺乏 iOS 支持,据说也有约 5MB 的大小限制,尽管我的经验表明它取决于浏览器。

iOS 上不支持。 总存储量有限(通常约为 5MB)。

  • 难道不使用插件就无法使用 Cordova 存储大型数据库吗?
  • 为什么 cordova-sqlite-plugin 不是 Cordova 的一部分并由 Apache 提供支持?

【问题讨论】:

  • 这个限制是故意添加的,以防止网页占用太多空间。

标签: android ios sqlite cordova cordova-plugins


【解决方案1】:

你需要用不同的眼光来看待,我个人认为 Cordova 世界的解决方案是针对小型存储的,与为一个 REST API 提供的服务器同步,运行 Mysql、Mongo 或其他服务数据库。

如果您需要在项目中存储大数据库文件,您可以使用插件文件:https://www.npmjs.com/package/cordova-plugin-file

您只需要使用相同的 LocalStorage 逻辑,但在项目中保存一个文本文件

【讨论】:

    【解决方案2】:

    仅使用我们目前维护的平台和核心插件,我们就有大量工作要做。我们欢迎任何想要加入、帮助和致力于项目以及帮助社区的人。

    无论它发生在 Cordova 存储库之一还是其​​他地方,cordova 提交者都会很乐意将用户发送到可靠插件所在的任何地方。

    在很大程度上,我也同意@diogomachado,因为您可能/不应该需要在用户的设备上存储那么多数据,并且还有其他方法可以做到这一点(fileAPI)。许多现代项目已经从 sql 中移出了整个关系模型,并且不再需要原子事务。 你有几张桌子?

    还有,没用过,不过iOS 10 支持IndexedDB。 http://caniuse.com/#feat=indexeddb

    如果您想在这方面提供帮助,这里有更多关于为cordova 做贡献的信息。 https://cordova.apache.org/contribute/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多