天天看點

orm2 中文文檔 3. 定義模型

譯者: 飛龍 來源: 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

(通常也是資料庫裡面表的名稱),它有三個屬性(

name

surname

為文本,

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=73

person

對象,并且列印出它的名字和姓氏。其它類型的可用屬性請見[這裡](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

删除執行個體時是否要删除關聯