Angularjs 离线火基
我正在使用Firebase作为后端实现AngularJS web应用程序;它也应该离线工作;多用户同步问题应该是非常有限的,因为应用程序(按设计)只允许在脱机时输入新数据 我知道Firebase具有离线功能,从某种意义上说,客户端可以承受暂时的网络连接故障:任何写入操作都将被延迟并缓存,直到网络再次启动 我询问是否存在扩展Firebase脱机功能的可能性(或是否有任何计划实施该功能),以使客户端能够在服务器上本地缓存(部分)数据的快照,从而能够为客户端提供完整的脱机体验,并提供读操作 我看到一个存在,但它的文档是相当“有限的”(善良的…:-)。应首选本机解决方案 更新:在Frank van Puffelen发表评论后,我最好限定我的问题:Angularjs 离线火基,angularjs,couchdb,firebase,offline-caching,pouchdb,Angularjs,Couchdb,Firebase,Offline Caching,Pouchdb,我正在使用Firebase作为后端实现AngularJS web应用程序;它也应该离线工作;多用户同步问题应该是非常有限的,因为应用程序(按设计)只允许在脱机时输入新数据 我知道Firebase具有离线功能,从某种意义上说,客户端可以承受暂时的网络连接故障:任何写入操作都将被延迟并缓存,直到网络再次启动 我询问是否存在扩展Firebase脱机功能的可能性(或是否有任何计划实施该功能),以使客户端能够在服务器上本地缓存(部分)数据的快照,从而能够为客户端提供完整的脱机体验,并提供读操作 我看到一个
*Firebase是否在其Web API中本机支持离线数据访问,或者很快会支持离线数据访问?*根据Firebase文档,它确实: 从网站: Firebase提供了一些简单的原语,允许在客户端与Firebase服务器断开连接时写入数据。无论客户端是否干净地断开连接,这些更新都会发生,因此即使连接断开或客户端崩溃,我们也可以依靠它们来清理数据。断开连接后,可以执行所有Firebase写入操作,包括设置、更新和删除 我对这个问题的解释有误吗 我差点删除了我的帖子,但当我点击OP提供的链接时,我看到第三方软件包的功能与Firebase本身完全相同,可能是在Firebase改进同步之前完成的
当我删除帖子时,我认为OP可能只需要一组选择性的数据,而不是FB在恢复连接之前本地存储的“活动数据”Firebase的另一种解决JS应用程序此问题的方法是
CouchDb(服务器)PockDB(JS客户端)
。如果你已经为你的AngularJS应用程序实现了一个干净的服务层,那么移植到PockDB应该相当简单,因为两者都是NoSQL/JSON
数据库
PockDB是一个Javascript API,它实现了一个完全离线的CouchDb客户端。它可以自动检测并使用\u本地存储
、\u索引数据库
或\u WebSQL
在联机或脱机时永久保存本地数据。PockDB API可用于访问本地或远程数据库(只需更改URL),并在两者之间连接完全同步或过滤同步。有许多有用的PockDB插件、代码示例和一个小型包装器库来支持AngularJS的Q promises API
使用PockDB,您可以在脱机时安全地启动应用程序,几天后重新启动应用程序,并将所有CUD数据更改同步到服务器。这可能会导致更新冲突,因此CouchDb支持记录版本控制,该版本控制旨在检测和跟踪此情况。因此,您可能需要服务器端逻辑来解决这些冲突。对于具有离线同步和CouchDb关键功能的分布式系统来说,这是不可避免的(不完全正确…请参阅注释)
PockDB基本上是ApacheCouchDB的重新实现,包括它的高效同步协议。CouchDb和PockDB都是经过良好测试的免费开源数据库。开源意味着CouchDb服务器也可以作为内部网服务部署——可以选择同步到外部云服务。有许多CouchDb托管提供商
Cloudant托管团队最近将他们的BigCoach群集功能添加到Apache CouchDb 2.0项目中,因此现在您可以从Micro Db(PockDB)=>单服务器=>多主机(复制)=>Big Coach群集/地理群集进行扩展。与MongoDb不同,CouchDb安全地支持单服务器部署
注意:PouchDb也可以使用相同的协议同步到CouchBase,但CouchBase!==CouchDb。这是一种商业产品
- 用于移动或网络应用程序
-
- -免费书籍
-
- -和基于的身份验证API,以使用OAuth2或本地注册/登录CouchDb服务器。可选的和一个不错的。在通过PassportJS(支持300多个身份验证插件)进行身份验证后,用每个登录会话(如身份验证令牌)随机生成的用户名和密码替换CouchDb中较弱的基本身份验证