我可以使用 CouchDB mobile 代替 localStorage 吗?

Posted

技术标签:

【中文标题】我可以使用 CouchDB mobile 代替 localStorage 吗?【英文标题】:Can I use CouchDB mobile as a replacement for localStorage? 【发布时间】:2011-11-08 13:56:34 【问题描述】:

我有一个离线运行的现有网络应用程序(使用 html5 缓存清单)。

我将数据存储在 localStorage 中。我将达到 localStorage 的 5Mb 限制。我可以将 CouchDB 用作本地数据库,有效地将 localStorage 替换为 CouchDB 实现吗?

我不想在任何服务器上安装 CouchDB,我只想利用客户端存储功能来替换我的 localStorage 实现。

下载相关的 couchdb.js 文件并更改我的客户端持久性代码就这么简单吗?

谢谢

【问题讨论】:

【参考方案1】:

像往常一样“视情况而定”

如果您的应用程序是从网站提供的,那么不,有像 pouchdb 这样的项目旨在提供 CouchDB 的客户端版本,但它们不会帮助您避免浏览器的限制

如果您将应用程序作为独立应用程序发布,那么可以,按照安装说明将 CouchDB 添加到您的应用程序应该是一件相当简单的事情:

安卓:http://www.couchbase.org/get/couchbase-mobile-for-android/current ios:http://www.couchbase.org/get/couchbase-mobile-for-ios/current

并让您的客户端代码发出沙发请求而不是 localStorage 请求,记住:

    localStorage 只存储字符串,CouchDB 存储 JSON,而 对 Couch 的调用是异步的,而 localStorage 是同步的,不过这两者在 javascript 中都应该不是特别大的变化。

要查看的另一个主要选项是 PhoneGap,它可以让您从设备访问本机存储 API,同时仍处理 html/javascript,它是一个跨平台库,允许您访问本机 API,包括存储 API不会有浏览器限制 - http://docs.phonegap.com/phonegap_storage_storage.md.html#Storage

PhoneGap 还要求您以应用程序而非网站的形式发布(这是不受浏览器限制的唯一方式)。

【讨论】:

【参考方案2】:

这应该更新。 PouchDB 现在使用 IndexedDB,在我尝试过的大多数浏览器上都没有大小限制(或者是一个选项)。我在浏览器中存储了几个 100MB 的地图图块。

见:https://gis.stackexchange.com/questions/62070/offline-slippy-map-tiles-database-for-leaflet/62073#62073

【讨论】:

【参考方案3】:

简短的回答是,在您的手机上安装 Couchbase Mobile 需要您将其作为应用程序发布,并且它拥有的 Couch API 比 localStorage API 功能更全面。

如果您想了解在 CouchDB 的网络 API 范围内可以做什么(不是特定于移动设备,但在移动设备上很方便),请参阅 this architecture document。

【讨论】:

技术新手很容易错过的警告。 Couchbase 不是 CouchDB,它是 Memcache NoSQL 服务器 (Membase Server),它与 ​​CouchDB 使用 类似 协议进行复制。大部分是相同的,但它在引擎盖下的工作方式不同,并且某些输出不是您对 CouchDB 的期望。 ***.com/questions/5578608/…

以上是关于我可以使用 CouchDB mobile 代替 localStorage 吗?的主要内容,如果未能解决你的问题,请参考以下文章

将 couchdb 与 Android 应用程序捆绑在一起

用啥代替 $.mobile.changePage()?

如何从命令行启动CouchDB

使用 couchdb 和 lucene 自动完成

用户角色的 Couchdb/Couchdb 复制策略

何时使用单独的 CouchDB 数据库?