2012-08-29 10 views
7

私は作成したいアプリがあります。しかし、私はそれについてどうやって行くのか分かりません。私はnode.jsを使用していますが、couchdbを使いたいですが、もしmongodbやriakのようなものが良いアイデアなら、アイデアを聞きたいと思っています。しかし、私はサイトを持って、Node.JSとCouchDBのオフラインアプリ

cool.com

とCouchDBのインスタンスだけでなく、店舗を管理するためのサイトがあるに言います。ショッピングカートを言う。データベースにはすべての店舗のアイテムとデータが格納されています。アプリケーション自体には、そのデータを管理するための管理バックエンドがあり、アイテムを変更することができます。私は何ができるようにしたいのですが、ユーザーにインターネットからの切断を依頼し、管理者のバックエンドの作業を依然として持つことができます。私はこれがうまく動作することを認識しています。私は、クライアント側のフレームワークを私のモデル/ルート/コントローラ/と組み合わせて使用​​する必要があります。しかし、わからないことは、オフラインでサイトを機能させる方法です。ローカルにインストールされている場合couchdbはオンラインから戻るときにローカルからリモートにデータを同期できます。管理者ユーザーがコンピュータ上にいる場合は、ソファをインストールすることができます。しかし、それは乱雑になる可能性があります。

また、管理者のユーザーがタブレットや携帯電話の場合はどうなりますか?これを行うには、実際のモバイルアプリとデスクトップアプリを用意する必要がありますか?私はこれを設定できる何らかの方法があるので、それはエンドユーザにとってシームレスです。私はこれもエンドユーザにとってはオフラインにしたいと思っていますが、より大きなオーディエンスは管理者です。

もう1つの使用例は、POSシステムをインストールします。電源が切れます。しかし、POSシステムはウェブからタブレットにロードでき、アプリがオフラインで利用できるため、Wi-Fiがあればカードベースの販売も可能です。

私はこれを行う方法がわかりません。私はバックエンドと同様にデータを扱うことができるクライアントフレームワークが必要であると仮定します。エバーやアングラのようなもの。 theresも流星やダービーのように1つのスタックにすべて含まれていますが、それらは完全にオフラインではありませんが、リアルタイムで表示されます。流星にはミニ・モンゴがあるので、調べる価値があるかもしれません。

私は、このセットアップがうまく動作するように誰かが助けてくれることを願っていましたが、ソファを使うのが好ましいですが、データを同期する方法があれば他のnosqlも機能します。

+0

カードベースの販売はどういう意味ですか?クレジットカードでの支払いを意味しましたか? –

+0

はい。販売システムの店舗ポイントだから。複数の支払い方法を採用します。 – skift

+0

あなたはどうしたの? – bryanmac

答えて

3

Node.JSとChrominiumをデスクトップ環境としてパッケージ化するAppJs(http://appjs.com/)という興味深いプロジェクトがあります。現在は非常に新鮮ですが(ドキュメントはほとんどありませんが)、オンラインアプリケーションと同じツールを使用しています。

オフライン環境とオンライン環境を同期させる場合。あなたが想像している方法でCouchDBに頼ることはできません。 CouchDBのモバイル・サポートは、ドキュメンテーションのいくつかが示唆しているほど包括的ではありません。したがって、この意味では、SQL/Mongo/Punchcardsを使用することと変わりありません。

XMLまたはJSON(または単なるテキスト)に基づいて適切なシリアル化スキームを設計し、オンラインインストールとオフラインインストールとの間でファイルを渡すことで、もっと不運になるかもしれません。

編集 - これを書いて以来、ノードWebkit - http://nwjs.io/ - は明らかにApp.jsの最も明白な置換えです。それは非常に簡単なAPIといくつかの素晴らしい機能を持っています。

+0

hrmm、app.jsは非常によくフィットするようです。サーバーをバンドルする機能があるかどうかは分かりますか?私がソファのインスタンスをバンドルするためにそれを得ることができれば、それは完璧であろう。 – skift

+0

私のアプリのデスクトップインスタンスにはapp.jsが使用されます。モバイル用のphonegapのようなものです。私はローカルデータベースのためにベットする他の問題があることを知っていますが。しかし、それは数台のコンピュータにしかインストールされないので、dbを手動でインストールするためのコマンドスクリプトを作成し、後で適切にパッケージ化する解決策を見つけることができます。 – skift

4

クライアントがオフラインになってオンラインになる(電源が入っているPOSのように)場合は、私は、クラウドへのバックグラウンドパブリッシングや同期でローカルストレージをオフにすることをお勧めします。ローカルストレージオプションが何かの光からモンゴ、CouchDBのなどのような無SQLオプションにFirebirdのsqliteを、SQLEXPRESS、のようなすべてのものかもしれない

...

しかし、クライアントやデバイスのために、構成や重量のしやすさを考慮してくださいオプションのクライアントのタイプも考慮する必要があります。デバイスからPCまでさまざまなプラットフォームがありますか?あなたは設定と実行時のフットプリントが重いものは望ましくありません。それはサービス側では問題ありません。

サービス側では、データの性質と、トランザクション/リレーショナルシステム(バンキングなど)や最終的に一貫した/非トランザクション(非SQL)ドキュメントに適しているかどうかを考慮してください。オプションとしてハイブリッドを忘れないでください。

デバイスのサービスオプションとサービスのストレージオプションは、サービスインタフェース(ソープ、休憩/ http、ソケットなど...)。

すべてのソリューションに適合するサイズは1つではありませんが、sqlserver/mysqlやcouchdb/mongodbなどでサービス側のスケーラビリティを実現するには、デバイスやクライアントのsqliteのような軽量化が便利です。センス。

読むためにいくつかのリンク:

あなたは疑問だが、かなり広い開いており、誰もサイズは、すべてのソリューションに適合しないがあります。うまくいけば、私は考えるべきいくつかの選択肢を提供しました。

+0

私はローカルでも最初に考えていました。本質的に2つのアプリを作る。サイト、およびサーバー。両方とも非常に似通ったAPIを使用することができます。実際には、システムの一部はタブレット上で利用可能なPOSインタフェースになります。私は彼らにオンライン版を使用させることができるかもしれないと思った。デスクトップはオフライン(再び、POS)を持つことができる必要があります。もし私がモバイル用にオフラインになるのであれば、それも素晴らしいでしょう(phonegap?)。別のアプリを作る必要がある場合は、できるだけシームレスにする必要があります。 – skift

+0

デバイス/ PCをsqlite(マルチプラットフォーム - 共有SQLコード)とその周辺のサービスオプション(mongo/couchdb)の両方に統合することができます。私はノードに合うようにモンゴを見つけましたが、couchdbとあまり遊んでいませんでした。 – bryanmac

+0

私は、オフラインアプリを管理者に提供するだけで、同期を設定するための資格情報が必要だと考えていました。サイト上ではdbをローカルにチェックし、同期を待つことができます。それが行われたときにはローカルのものを使用します。ローカルコピーが存在しない場合は、オンラインdbを使用します。この方法は、その1つのアプリ、私はローカルDBのためのパッケージのいくつかの種類を提供しています。しかし、これはまだ私がどのようにモバイルに取り組むかという疑問を残しています。オンラインになるように強制しますか?モバイルアプリを作ることができます。ソファには明らかに、彼らが答えているかもしれない、彼らが働いていると言っているソファのための作品にモバイルクライアントがあります。 – skift

6

私はそれがあなたのために働くかどうか分かりませんが、私はかなり長い間このようなアプリケーションを考えていましたし、可能なことについていくつかの研究をしてきました。私が考えることができる最善の解決策は、couchdbでサーバーを使用し、アプリケーションのクライアントサイドを作成することです。その後、データストレージの場合はpouchdbを使用し、アプリケーションがオンラインの場合は、pouchdbを定期的にserverside couchdbと同期させます。私はポーチが早い段階にあり、生産準備ができていないことを知っていますが、あなたがそれにいくつかの作業をしたいと思っているなら、それは実行可能だと思います。

+0

pouchdbも有望そうです。私は本当にこれが好きです。 @charlieがapp.jsにバンドルされている場合、それはプラスになります。 – skift

+0

@luckysmack PouchDB用のAppJは実際には必要ありません。ブラウザー(またはChromium Embeddedを実行する場所)のIndexedDB上で実行され、WebSQLとLocalStorageのサポートも下位互換性があります。 – dain

+0

これを達成するためのドキュメントはありますか?最終的にapp.jsを使用せず、ブラウザに組み込まれたユーザーだけを使用すればどうなるでしょうか?または、他の何か? – skift