gpt4 book ai didi

angularjs - 离线 Firebase

转载 作者:行者123 更新时间:2023-12-04 02:05:02 26 4
gpt4 key购买 nike

我正在实现一个以 Firebase 作为后端的 AngularJS Web 应用程序;它也应该离线工作;多用户同步问题应该非常有限,因为该应用程序 - 按照设计 - 仅在离线时允许新数据条目。

我了解 Firebase 具有离线功能,从某种意义上说,客户端可以承受临时的网络连接故障:任何写入操作都将被延迟并缓存,直到网络再次出现。

我问是否存在任何可能性(或是否计划实现)来扩展 Firebase 离线功能,使客户端能够本地缓存服务器上(部分)数据的快照,从而能够为客户提供完整的离线体验,也可以进行读取操作。

我看到一个 third part Firebase wrapper存在,但它的文档非常“有限”(善良...... :-)。应该首选 native 解决方案...

更新 :在 Frank van Puffelen 发表评论后,我更好地限定了我的问题:

*Firebase 是否在其 Web API 中原生支持离线数据访问,还是会很快支持?*

最佳答案

为 JS 应用解决此问题的 Firebase 替代方案是 CouchDb (server) <=> PouchDb (JS client) .如果你已经为你的 AngularJS 应用程序实现了一个干净整洁的服务层,那么移植到 PouchDb 应该是相当简单的,因为两者都是 NoSQL/JSON。数据库。

PouchDb 是一个 Javascript API,它实现了 完全离线 CouchDb 客户端。它可以自动检测和使用_local storage_ , _IndexDb__WebSQL_在线或离线时永久保留本地数据。 PouchDb API 可用于访问本地或远程数据库(只需更改 URL)并在两者之间连接完全同步或过滤同步。有许多有用的 PouchDb 插件、代码示例和一个小型包装库来支持 AngularJS 的 Q Promise API。

使用 PouchDb,您可以在离线时安全地启动您的应用程序,然后在几天后重新启动您的应用程序并将所有 CUD 数据更改同步到服务器。这可能会导致更新冲突,因此 CouchDb 支持旨在检测和跟踪这种情况的记录版本控制。因此,您可能需要服务器端逻辑来解决这些冲突。这对于具有离线同步和 CouchDb 的一个关键特性的分布式系统来说是不可避免的(不太正确……见评论)

PouchDb 基本上是 Apache CouchDb 的重新实现,包括它的高效同步协议(protocol)。 CouchDb 和 PouchDb 都经过良好测试,免费且开源。开源意味着 CouchDb 服务器也可以部署为 Intranet 服务 - 可选择同步到外部云服务。有许多 CouchDb 托管服务提供商。

Cloudant 托管团队最近将他们的 BigCouch 集群功能添加到 Apache CouchDb 2.0 项目中,因此现在您可以从 Micro Db (PouchDb) => Single Server => Multi-Master (Replicated) => Big Couch Clustered/Geo Clustered 进行扩展。与 MongoDb 不同,CouchDb 安全地支持单服务器部署。

注意:PouchDb 也可以使用相同的协议(protocol)同步到 CouchBase,但 Couchbase !== CouchDb。这是一个商业产品。

  • How to code your CouchDb and PouchDb replication用于移动或网络应用程序。

  • 链接:
  • Apache CouchDb Project
  • Couch Db - The Definitive Guide - 免费书籍。
  • Pouch Db
  • AngularJS wrapper for PouchDB
  • Couchbase

  • CouchDb 主机:
  • Cloudant
  • Iris Couch
  • Smileupps

  • DIY
  • How To Install CouchDB and Futon on Ubuntu 12.04 - Digital Ocean
  • Secure CouchDB by using SSL/HTTPS

  • docker +沙发数据库:
  • Dockerizing a CouchDB Service
  • GitHub: Yet Another Dockerized CouchDB
  • Dockerized CouchDB 1.6.0 with stud SSL terminator

  • 插件的卡车负载

    PouchDb 有许多扩展点和不断增长的列表插件(最后计数 37 个):
  • Plugins and External Projects

  • 安全模型

    迁移到 CouchDb 时需要考虑的一个问题是它具有更有限的访问控制模型。这部分是由于它的复制算法。这篇博客文章详细介绍了这一点(比真正的权威指南更好)。
  • Matt Woodward's Definitive Guide to CouchDB Authentication and Security
  • CouchDB Security Overview
  • Superlogin - Clientserver基于 PassportJS 的身份验证 API使用 OAuth2 或本地注册/登录到 CouchDb 服务器。可选 Angular API和一个不错的Demo reference app .在通过支持 300 多个身份验证插件的 PassportJS 进行身份验证后,将 CouchDb 中较弱的基本身份验证替换为每个登录 session (如身份验证 token )随机生成的用户名和密码。
  • 关于angularjs - 离线 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25990048/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com