Tip: LoopBackがどのように動作するかを理解するために 最初に読むこと。
<figcaption>モデルの継承</figcaption></figure>
</div>
モデル
モデル はLoopBackの心臓部であり、データベースやその他のバックエンドサービス(REST、SOAPなど)のようなバックエンドのデータソースを表現します。 LoopBackのモデルは、NodeやREST API で使用するJavaScriptのオブジェクトです。
モデルを定義すると、自動的に作成・読取・更新・削除の全ての操作が揃った、定義済みのREST APIがついてくるのは、LoopBackの重要かつ強力な機能です。
基本的なモデルオブジェクト は フック を追加したり、データを検証したりするためのメソッドを持っています。 その他のモデルオブジェクトは、これらを全て継承しています。モデルには、右図のような継承の階層があります。 モデルを永続化データソースに紐付けると、それは作成・読取・更新・削除の操作を備えた接続済みモデルになります。 LoopBackの組み込みモデルもこれらを継承しています。
組み込みモデル
全てのLoopBackアプリケーションは、User・Role・Application など、幾つかの 組み込みモデルを持っており、これらの一般的なモデルをゼロから作る必要はありません。
独自モデル
アプリケーションに固有の 独自モデルを定義する ことができます。 組み込みモデルを拡張して、User・Application やその他の組み込みモデルが予め持っている機能の上に 独自のモデルを作ることもできます。
LoopBackモデルは、モデルが基づくデータソースの種類によって、いくつかの方法で作ることができます。
- LoopBackモデル生成ツールを使用する。
- 既存のリレーショナルデータベースから モデルの発見 を使って。 この場合、モデルとデータベースを LoopBack の スキーマ / モデル同期 APIを使用して同期することができます。
- NoSQL データベースや REST API の自由形式データのインスタンス内部調査によって。
3つの方法はすべて、LoopBackのモデルを定義するモデル定義JSONファイルを、LoopBackプロジェクトの規約に従って common/models
ディレクトリ内に作成します。例えば、common/models/account.json
のようなファイルです。
また、LoopBack API を使って独自のモデルをプログラム的に作成したり、 モデル定義JSONファイル を手作業で編集したりできます。 ほとんどの場合、モデルを作成するときにこれらの方法は不要ですが、モデルを変更したりカスタマイズしたりするときにはよく使うでしょう。
Note:
モデル定義JSONファイル は LoopBack が自動的に一意の id
プロパティを追加するかどうかを示す
idInjection
プロパティを持っています。データベースに紐付けられたモデルでは、idプロパティはプライマリキーに対応します。
詳細は、ID プロパティ を参照してください。
モデルのリレーション
多対1・ 1対多・ 多対多 などの、モデル同士のリレーションを表現できます。
モデルの作成・読取・更新・削除操作
モデルを永続化データソースに紐付けると、それは、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 を参照してください。
アプリケーションロジック
いくつかの方法で、独自のアプリケーションロジックを追加できます。
- リモートメソッド (独自のRESTエンドポイント)や、リモートメソッドによって起動される リモートフック、あるいはモデルの作成・読取・更新・削除操作によって起動される 操作フック として、モデルにアプリケーションロジックを追加する。
- アプリケーション開始時に実行される起動スクリプトを追加する。
- Expressのミドルウェアに似た、独自の ミドルウェア を定義する。
モデルやバックエンドのデータベースに保存する前に、データを検証するコードを追加できます。
ミドルウェアのフェーズ
ミドルウェア は、HTTPリクエストがRESTエンドポイントに届いた時に、実行される関数のことです。 LoopBack は Expressにもとづいているので、LoopBackのミドルウェアは、Expressのミドルウェアと同じです。 しかし、LoopBackは フェーズ の概念を追加し、ミドルウェアが呼び出される順番を明快に定義しました。 フェーズを使うことで、標準的な Express のミドルウェアで起こりうる呼出し順の問題を回避しています。
詳細は、ミドルウェアの定義 を参照してください。