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

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

cool.com

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

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

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

我只是不知道如何做到这一点。 让我们假设我需要一个可以处理数据以及后端的客户端框架。 像烬,或angular。 所有这一切都像meteor和德比js一样,但这些并不完全离线,而是为了实时显示。 虽然meteor确实有迷你mongo,所以它可能值得一看。

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

有一个叫做AppJs( http://appjs.com/ )的有趣项目,它把Node.JS和Chrominium作为桌面环境。 这是目前非常新鲜(很less文档),但它似乎是足够简单的(你会使用相同的工具,你会为你的在线应用程序)。

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

devise一个基于XML或JSON(或纯文本)的合适的序列化scheme,以及在在线和离线安装之间传递文件,您可能会有更多的运气。

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

我不确定它是否适合你,但是我现在一直在考虑这样一个应用程序,现在正在研究什么是可能的。 我能想到的最好的解决scheme是使用带有couchdb的服务器并编写基于应用程序的客户端。 然后,对于数据存储使用pouchdb,并定期与您的服务器端的couchdb同步pouchdb,如果应用程序在线。 我知道袋子是在早期阶段,而不是生产准备,但如果你愿意投入一些工作,我会说这是可行的。

如果您希望客户端在离线和上线时工作得很好,就像使用POS的function一样,那么我会build议使应用程序主要通过后台发布或与云同步来实现本地存储。

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

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

在服务方面,考虑数据的性质以及它是否适合交易/关系系统(银行等)或最终一致/非事务性(非sql)文档。 不要忘记混合动力车作为一个选项。 也考虑服务平台 – 例如,节点与mongodb(json对象前后)很好…

设备和服务存储选项可以不同(可能应该)由服务接口(肥皂,rest/ http,套接字等)分开。

很难有一个适合所有解决scheme,但通常在设备或客户端上的轻量级sqlite设备或客户端使易于安装/configuration,而在服务方面像sqlserver / mysql或couchdb / mongodb的可扩展性是有道理的。

一些链接阅读:

你的问题是相当广泛的,没有一个适合所有解决scheme。 希望我提供了一些想法。

Interesting Posts