LoopBackを理解するために必要な最重要概念の導入。
Page Contents
モデル継承図
モデルの継承

モデル

モデル はLoopBackの心臓部であり、データベースやその他のバックエンドサービス(REST、SOAPなど)のようなバックエンドのデータソースを表現します。 LoopBackのモデルは、NodeやREST API で使用するJavaScriptのオブジェクトです。

モデルを定義すると、自動的に作成・読取・更新・削除の全ての操作が揃った、定義済みのREST APIがついてくるのは、LoopBackの重要かつ強力な機能です。

基本的なモデルオブジェクトフック を追加したり、データを検証したりするためのメソッドを持っています。 その他のモデルオブジェクトは、これらを全て継承しています。モデルには、右図のような継承の階層があります。 モデルを永続化データソースに紐付けると、それは作成・読取・更新・削除の操作を備えた接続済みモデルになります。 LoopBackの組み込みモデルもこれらを継承しています。

組み込みモデル

全てのLoopBackアプリケーションは、User・Role・Application など、幾つかの 組み込みモデルを持っており、これらの一般的なモデルをゼロから作る必要はありません。

独自モデル

アプリケーションに固有の 独自モデルを定義する ことができます。 組み込みモデルを拡張して、UserApplication やその他の組み込みモデルが予め持っている機能の上に 独自のモデルを作ることもできます。

LoopBackモデルは、モデルが基づくデータソースの種類によって、いくつかの方法で作ることができます。

3つの方法はすべて、LoopBackのモデルを定義するモデル定義JSONファイルを、LoopBackプロジェクトの規約に従って common/models ディレクトリ内に作成します。例えば、common/models/account.json のようなファイルです。

また、LoopBack API を使って独自のモデルをプログラム的に作成したり、 モデル定義JSONファイル を手作業で編集したりできます。 ほとんどの場合、モデルを作成するときにこれらの方法は不要ですが、モデルを変更したりカスタマイズしたりするときにはよく使うでしょう。

モデルのリレーション

多対11対多多対多 などの、モデル同士のリレーションを表現できます。

モデルの作成・読取・更新・削除操作

モデルを永続化データソースに紐付けると、それは、PersistedModel クラスに由来する、作成・読取・更新・削除の操作を備えた 接続済みモデル になります。

操作 REST LoopBack モデルのメソッド
(Node API)*
対応する SQLの
操作
作成 PUT /modelName
POST /modelName
create()* INSERT
読取(取得) GET /modelName?filter=... find()* SELECT
更新(変更) PUT /modelName updateAll()* UPDATE
削除(破壊) DELETE /modelName/modelID destroyById()* DELETE

(* ) 記載されたメソッドは代表例です。同様な機能のメソッドが他にもあります。例:findById()findOne()findOrCreate()

詳細は、PersistedModel API documentation を参照してください。

アプリケーションロジック

いくつかの方法で、独自のアプリケーションロジックを追加できます。

モデルやバックエンドのデータベースに保存する前に、データを検証するコードを追加できます。

ミドルウェアのフェーズ

ミドルウェア は、HTTPリクエストがRESTエンドポイントに届いた時に、実行される関数のことです。 LoopBack は Expressにもとづいているので、LoopBackのミドルウェアは、Expressのミドルウェアと同じです。 しかし、LoopBackは フェーズ の概念を追加し、ミドルウェアが呼び出される順番を明快に定義しました。 フェーズを使うことで、標準的な Express のミドルウェアで起こりうる呼出し順の問題を回避しています。

詳細は、ミドルウェアの定義 を参照してください。

データソースとコネクタ

LoopBackは、データベース・REST API・SOAP Webサービスといったバックエンドービスを、データソース として一般化しています。

データソースの背後には コネクタ があり、データベースやその他のバックエンドサービスと直接通信します。 アプリケーションが直接コネクタを使用することはなく、DataSourcePersistedModel API を使用してデータソース経由で使用します。

LoopBack コンポーネント

LoopBack コンポーネントは、追加の「プラグイン」機能を提供します。

  • プッシュ通知 - モバイルアプリに情報を送信し、 モバイルデバイス上にバッジ・アラート・ポップアップメッセージが直ちに表示できるようにします。
  • ストレージコンポーネント - サーバのファイルシステムと同様に、クラウドストレージ(Amazon・Rackspace・Openstack・Azureなど)と ファイルのアップロード・ダウンロードが行えるようにします。
  • サードパーティーのログイン - Passport を統合し、 ユーザが、Facebook・Google・Twitter・GitHub などのOAuth・OAuth2・OpenID をサポートする、サードパーティーの資格情報を使って ログイン(そしてアカウントのリンク)を行えるようにします。
  • 同期 - モバイルアプリケーションがオフラインでも動作し、 再接続時にサーバアプリケーションとデータを同期できるようにします。
  • OAuth 2.0 - LoopBack アプリケーションが OAuth 2.0 プロバイダとして機能できるようにし、 保護されたAPIエンドポイントにアクセスしようとするクライアントアプリケーションやユーザを認証できるようにします。