orm2 中文文件 3. 定義模型

weixin_33766168發表於2016-01-10

譯者:飛龍

來源:Defining Models

在[連線](1. Connecting to Database.md)之後,你可以使用連線物件(db)來定義你的模型。你需要指定模型的名稱,一個用於描述的屬性和一些(可選的)選項。下面是一個簡短的例子:

var Person = db.define('person', {
  id:      {type: 'serial', key: true}, // the auto-incrementing primary key
  name:    {type: 'text'},
  surname: {type: 'text'},
  age:     {type: 'number'}
}, {
  methods : {
    fullName: function() {
      return this.name + ' ' + this.surname;
    }
  }
});

這個模型叫做person(通常也是資料庫裡面表的名稱),它有三個屬性(namesurname為文字,age為數值)。如果你自己不指定任何鍵的話,預設的id: { type: 'serial', key: true }會新增進來。在這個例子中,有個模型方法叫做fullName。下面是這個模型的使用方法的示例:

Person.get(73, function(err, person) {
  if (err) throw err;

  console.log('Hi, my name is ' + person.fullName());
});

這會獲取id=73person物件,並且列印出它的名字和姓氏。其它型別的可用屬性請見[這裡](3.1 Model Properties.md)。

API

/**
 * @param {Object} props Property definitions
 * @param {Object} opts Options
 */
db.define(props, opts)

db.define()接收的第一個物件(第二個引數)被稱為屬性物件,它定義了所有的[屬性](3.1 Model Properties.md)。

第二個物件指定了額外的選項:

選項名稱 型別 描述
collection String 覆寫資料庫中表的名稱
methods Object 模型例項上的額外方法,它會被設定到例項上。
hooks Object 使用者定義的[鉤子或回撥](3.3 Model Hooks.md)
validations Object 使用者定義的[驗證器](3.2 Model Validations.md)
id Array 為了支援在properties上設定key: true而不提倡使用
cache Boolean 允許你開啟或者禁用單例行為。它叫做cache,但是和快取毫無關係。
autoSave Boolean 不推薦。在屬性修改時自動儲存模型。
autoFetch Boolean 是否自動獲取關聯
autoFetchLimit Number 自動獲取關聯的深度
cascadeRemove Boolean 刪除例項時是否要刪除關聯

相關文章