Page Contents
Page Contents

Model inheritance 

Models

_モデル_はLoopBackの中心部にあり、データベースやその他のサービス(RESTやSOAP等)のようなバックエンドデータソースを代表します。LoopBackのモデルは、NodeとRESTの両方のAPIを備えたJavaScriptオブジェクトです。

モデルはLoopBackの強力な主要機能です。モデルを定義すると、CRUD(create, read, update, delete)のすべての操作が可能な、事前定義されたREST APIが自動的に提供されます。 

基本的なモデルオブジェクトにはフックを追加するためのメソッドと、 データバリデーションのためのメソッドが備わっています。その他のモデルはすべて基本的なモデルオブジェクトから「継承」されています。モデルには、右図に示すような継承ヒエラルキーがあります。モデルに永続データソースをアタッチすると、接続されたモデル(Connected model)となり、CRUD操作が提供されます。LoopBackの組み込みモデルはそれらから継承しています。

ビルトインモデル

すべてのLoopBackアプリケーションは、User、Role、Applicationのような事前定義されたビルトインモデルを備えています。こういったありふれたモデルを一から作る必要はありません。

カスタムモデル

あなたのアプリケーションに特化したカスタムモデルを定義することができます。UserApplicationなどのビルトインモデルの既存機能をもとに、ビルトインモデルを継承してモデルを作成することもできます。

You can create LoopBack models in various ways, depending on what kind of data source the model is based on.  You can create models:

All three of these methods create aModel definition JSON file that defines your model in LoopBack, by convention in a LoopBack project’s common/models directory; for example, common/models/Account.json.

You can also create and customize models programmatically using the LoopBack API, or by manually editing the Model definition JSON file. In most cases, you shouldn’t need to use those techniques to create models, but generally will to customize models for your use.

モデルの関連

BelongsToHasManyHasAndBelongsToManyといったような、モデル間の関連 を記述することができます。

モデルのCRUD操作

データベースのような永続化データソースとモデルを接続すると、PersistedModel クラスから継承したCRUD操作(create, read, update, delete)を備える connected model になります。

操作 REST LoopBack model メソッド
(Node API)*
対応する SQL
操作
Create

PUT /modelName

POST /modelName

create()* INSERT
Read (取得) GET /modelName?filter=... find()* SELECT
Update (編集)

POST /modelName 

PUT /modelName

updateAll()* UPDATE
Delete (破棄) DELETE /modelName/modelID destroyById()* DELETE

*主要なメソッドのみ例示しましたが、他のメソッドも同様の機能を提供しています。他には findById()findOne(), and findOrCreate() などがあります。詳しくは PersistedModel API documentation を参照してください。

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

いくつかの方法で、カスタムアプリケーションロジックを追加することができます。下記のことが可能です:

モデルとバックエンドデータストアにデータを保存する前に、データバリデーションを実行するため、コードを追加することもできます。

ミドルウェアフェーズ

RESTエンドポイントに対してHTTPリクエストが発行されたとき、_ミドルウェア_は実行されるファンクションを参照します。LoopBackはExpressをベースにしているため、LoopBackのミドルウェアはExpressのミドルウェアと同じです。しかしLoopBackでは、ミドルウェアの実行順序を明確にするために、Expressミドルウェアにフェーズのコンセプトを追加しています。Expressミドルウェアでは実行順序に起因する問題が発生することがありますが、フェーズを使うことでこの問題を回避しやすくなります。

詳しくはDefining middlewareを参照してください。

データソースとコネクタ

LoopBackはデータベースやREST API、SOAP Webサービス、ストレージサービスなどのバックエンドサービスを一般化します。

データソースはデータベースやその他のバックエンドサービスと直接通信する「コネクタ」によって支援されます。アプリケーションはコネクタを直接使うことはなく、DataSourcePersistedModel APIを使ったデータソース経由で利用します。

LoopBack コンポーネント

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

  • Push notifications -  モバイルアプリに対して、「バッジ」やアラート、ポップアップメッセージのような形で端末上に即座に表示される情報の送信を可能にします。
  • Storage service - サーバのファイルシステムと同様に、クラウドストレージプロバイダ(Amazon、Rackspace、Openstack、Azure)へのアップロード及びダウンロードを可能にします。
  • Third-party login - Facebook、Google、Twitter、GithubまたはOAuth、OAuth 2、OpenIDをサポートしているシステムのサードパーティ証明書を利用して、Passportと連携したユーザログイン(及びアカウントのリンク)を可能にします。
  • Synchronization - モバイルアプリケーションでのオフライン操作と、再接続時のサーバアプリケーションとのデータ同期を可能にします。
  • OAuth 2.0 -  アクセス制限されたAPIエンドポイントへの認証とオーソライズを行う OAuth 2.0プロバイダ機能をLoopBackアプリケーションに追加します。

開発ツール

LoopBackは2つの主要な開発ツールを提供してします:

  • slc loopback … LoopBackアプリケーションの生成と編集のためのコマンドラインツールです。

slc loopback コマンドラインツールは対話的なプロンプトで開発手順をガイドします:

  1. Start with the application generator to initially create and scaffold the basic structure of the application: slc loopback.
  2. Add models (and model properties) using the model generator: slc loopback:model.   If you need to add properties to existing models, use the property generator, slc loopback:property
  3. Add data sources using the data source generator, slc loopback:datasource.
  4. Add relationships between models with the relation generator, slc loopback:relation.

Examples

StrongLoop provides numerous LoopBack example applications.  The table below lists some of the key examples.  Refer to https://github.com/strongloop/loopback-example for a complete list.

Name                                               Description
loopback-getting-started The basics of LoopBack. Follow along in Getting started with LoopBack to build the example.
loopback-getting-started-intermediate Full-stack example that builds on loopback-getting-started to demonstrate intermediate level features of LoopBack. Follow instructions in Getting started part II to build the example.
loopback-example-mongodb LoopBack with MongoDB.
loopback-example-mssql LoopBack with Microsoft SQL Server.
loopback-example-mysql LoopBack with MySQL.
loopback-example-oracle LoopBack with Oracle.
loopback-example-postgresql LoopBack with PostgreSQL.
loopback-example-relations Model relations and filtering via REST
loopback-example-app-logic How to add your own logic to a LoopBack app
loopback-example-access-control Controlling access to your API endpoints