LoginSignup
13

More than 5 years have passed since last update.

【Sails.js 入門 - 03】Models その1

Posted at

Models

多くの MVC フレームワークと同じように、Sails は、 どんなデータソースを使っていようともモデルとのやりとりを標準化するために ORM を提供する。 また、外部API、サポートされてないデータベース、インメモリストア (たとえばセッションストレージ)などからデータを取得するために、独自に作成したモデルとマッピングするインタフェースも定義できる。

What is a Model?

モデルとは、データベースに保存されたデータの型を代表するものである。たとえば、MySQLをつかっているなら、モデルはひとつのテーブルに相当するものだろう。もし、MongoDB を使っているなら、モデルはコレクションに相当するだろう。 どちらの場合でも、私たちのゴールは、どんなタイプのデータベースにも依存することなく、シンプルでモジュール化されたデータ管理の方法を提供することである。

How do I define a Model?

モデル定義は、属性(attributes)と関連(associations)を含む。

Attributes

属性(attributes)は、モデルの基本的な情報である。たとえば、Personというモデルは、name, phoneNumber, age, birthDate emailAddress のような属性を持つかもしれない。Personの定義はこのようになるだろう。

JSON
// Person.js
var Person = {
  name: 'STRING',
  age: 'INTEGER',
  birthDate: 'DATE',
  phoneNumber: 'STRING',
  emailAddress: 'STRING'
};

exports = Person;

データ型(type) は、基本は任意であり、DBが型をを必要とする時だけ付与する。'FLOAT' 'INT' 'STRING'

updatedAt createdAt

defaultsTo

defaultsTo は、 モデル作成時に値が指定されないなら、この値をこの属性にセットする、というものである。

Adapters

アダプタ(adapters) は、npm を使うか、プロジェクト内の api/adaptersディレクトリで定義することができる

アダプタはアプリケーション全体(グローバル)で上書きすることもできるし、モデルごとに異なるアダプタを関連付けることもできる。デフォルトのアダプタのアプリケーション設定の変更方法は、Configuration セクションを参照してほしい。

単一のモデルのアダプタを上書きするには、アダプタモジュールの名称を指定して、必要に応じて追加の設定情報を書けばいい。

たとえば、

JSON
// api/models/User.js
module.exports = {

 adapter: 'sails-mysql',
 user: 'root',
 password: 'thePassword',
 database: 'testdb',
 host: '127.0.0.1',

 attributes: {

    // Simple attribute:
    name: 'string',
    email: 'string',
    phoneNumber: {
      type: 'string',
      defaultsTo: '555-555-5555'
    }
 }
};

私たちのグローバル設定では、ディスクにセットするようになっている。しかし、アダプタを上書きしたので、Userモデルは、sails-mysqlアダプタを利用してMySQLに保存されるようになる。

Associations

関連(associations) は、 Sails.js ではまだ利用できない。しかしながら、ToDo リストでは優先度が高い。関連に関しては、#124 をウォッチしてほしい。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13