1

私のNodeJSプロジェクトはSailsJSに基づいており、それ自体がExpressJSを使用しています。

その API は、モバイル アプリからデータを取得するために使用されます。

トリッキーな部分は、データベースに変更があるたびにクライアント アプリにデータ ツリー全体を取得させたくないということです。

クライアントは、既に取得しているデータとサーバー上のデータの差分をダウンロードするだけで済みます。

それを実現するために、サーバーで git を使用することを考えました。つまり、リポジトリを作成し、すべてのエンドポイントを json ファイルとしてリポジトリに保存します。保存するたびに、自動コミットがトリガーされます。

次に、commit sha をパラメーターとして受け入れ、それと git HEAD との差分を返す特定の API エンドポイントを作成できます。

ウィリアム・ベントンによるこの投稿は、この考えで私を慰めました.

上記の言語とフレームワークに基づいて、これを機能させるのに役立つヒントを探しています。

  • これの概念実証を実際に見たいのですが、見つかりませんでした
  • NodeJS で git を使用する簡単な方法はまだ見つかりませんでした。
  • IONIC フレームワークで開発されたクライアント アプリで返された差分を解析する方法がわからないため、AngularJS.

注 : API は読み取り専用です。すべての DB の移動は、少数のユーザーが使用するカスタム Web バックエンドによってトリガーされます。

4

1 に答える 1

0

その投稿のアイデアを実験的な構成管理サービスに使用しました。そのコードは Erlang で書かれており、Node 固有の提案を提供することはできませんが、いくつかの一般的なアドバイスがあります。

当時、私が使用したいと思っていたどの言語からでも、git 自体を呼び出すことは良い選択肢ではありませんでした。git を一般的なバージョン付きオブジェクト ストアとして使用すると、実際には驚くほどうまく機能しますが、git 配管コマンドを使用するのは面倒です (すべてのフォークのために時間がかかります)。 git ライブラリ。

独自の永続的なトライ データ構造を実装し、その上に git のようなライブラリ インターフェイスを配置しました。これを行うことの良い点は、差分が保存しているデータ形式に敏感になる可能性があることです。git を呼び出すと、標準の diff に適したデータのシリアル化形式を見つけるのに苦労します。(ただし、diffable 形式がなくても、一連の操作をクライアントに送り返して、クライアントが持っている古いオブジェクトを再生することができます。)

于 2015-07-16T18:03:23.297 に答える