使用Node.JS和CouchDB的离线应用程序

我有一个我想创建的应用程序。 但我不知道如何去做。 我正在使用node.js,并希望使用couchdb,但是如果像MongoDB或Riak这样的东西会是更好的选择,他们会愿意听到想法。 但是,我有一个网站,说

cool.com

还有一个couchdb实例,以及一个管理商店的网站。 说购物车。 数据库容纳了所有商店的物品和数据。 该应用程序本身有一个管理后台来管理该数据,并可以更改项目。 我希望能够做到的是有能力让用户与互联网断开连接,并且仍然有管理员后端工作。 我意识到要做到这一点,我需要使用客户端框架与我的模型/路线/控制器/任何。 但我不确定的是,如何让网站在离线状态下正常工作。 如果本地安装了couchdb,可以在上线时同步从本地到远程的数据,如果管理员用户在电脑上,我可以让他们安装沙发。 但那可能是混乱的。

另外,如果管理员用户在平板电脑或手机上呢? 我需要有一个真正的移动应用程序和桌面应用程序来做到这一点? 有没有什么办法可以设置它,以便最终用户无缝连接。 我也希望这对最终用户也是离线的,但更大的受众群体是管理员。

另一个用例是instore POS系统。 并且电源熄灭。 但POS系统可以从网上加载到平板电脑上,如果WiFi无法使用,他们仍然可以制作基于卡片的销售,因为该应用可以离线使用。

我只是不知道该怎么做。 让我们假设我需要一个可以处理数据以及后端的客户端框架。 像烬,或角。 theres也都在一个堆栈像流星和德比js,但那些不完全离线,但是为实时的外观。 虽然流星确实有迷你蒙哥,所以它可能值得研究。

我希望有人能帮我弄清楚如何让这个设置工作,最好是用沙发,但其他nosql也可以工作,如果我可以有一种方法来同步数据。


有一个名为AppJs的有趣项目(http://appjs.com/),它将Node.JS和Chrominium作为桌面环境进行打包。 它目前非常新鲜(很少有文档),但它看起来非常直截了当(您将使用与在线应用程序相同的工具)。

至于同步脱机和在线环境。 我怀疑你可以依照你设想的方式依赖CouchDB。 CouchDB移动支持并不像文档中的一些建议那么全面。 所以从这个意义上来说,使用SQL / Mongo / Punchcards并没有什么不同。

在设计基于XML或JSON(或纯文本)的合适序列化方案并在线上和离线安装之间传递文件时,您可能会有更多的运气。

编辑 - 自写这篇文章以来,Node Webkit - http://nwjs.io/ - 显然是App.js最明显的替代品。 它有一个非常简单的API和一些很棒的功能。


我不确定它是否适用于您,但我现在一直在考虑这样的应用程序,并且一直在研究可能的情况。 我能想出的最佳解决方案是使用带有couchdb的服务器并编写基于应用程序的客户端。 然后对于数据存储使用pouchdb,并在应用程序联机时定期将pouchdb与服务器端的couchdb同步。 我知道袋子处于早期阶段,并没有准备好生产,但如果你愿意在它上面做一些工作,我会说它是可行的。


如果你希望在离线和上线时工作得当的客户端(比如一个功能强大的POS),那么我建议应用程序主要通过后台发布或与云同步使本地存储工作。

本地存储选项可以是一切,从光源如sqlite,sqlexpress,firebird到没有SQL选项,如mongo,couchdb等...

但对于客户端或设备,请考虑配置的轻松和选件的重量。 您还需要考虑客户端的类型 - 您是否拥有从设备到PC的多种平台? 你不想要一个拥有沉重配置和运行时足迹的东西。 这在服务方面很好。

在服务方面,考虑数据的性质以及它是否适合交易/关系系统(银行等)或最终一致/非事务性(非sql)文档。 不要忘记混合动力车作为一种选择。 还要考虑服务平台 - 例如,节点适用于mongodb(json对象从前到后)...

设备和服务存储选项可以通过服务接口(soap,rest / http,sockets等)分开(可能应该是不同的)。

很难有一个适合所有解决方案的设备,但是通常在设备或客户端上使用sqlite这样的轻量级设备可以方便安装/配置,而在服务端使用sqlserver / mysql或couchdb / mongodb这样的可伸缩性也是有意义的。

一些链接要阅读:

  • http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB
  • http://www.sqlite.org/
  • http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx
  • 你的问题是相当广泛的,没有一个适合所有解决方案。 希望我提供了一些想法。

    链接地址: http://www.djcxy.com/p/41177.html

    上一篇: Offline apps with Node.JS and CouchDB

    下一篇: Offline support of WebSite