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
の定義はこのようになるだろう。
// 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 セクションを参照してほしい。
単一のモデルのアダプタを上書きするには、アダプタモジュールの名称を指定して、必要に応じて追加の設定情報を書けばいい。
たとえば、
// 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 をウォッチしてほしい。