譯者: 飛龍 來源: 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)。
第二個對象指定了額外的選項:
選項名稱 | 類型 | 描述 |
---|---|---|
| | 覆寫資料庫中表的名稱 |
| | 模型執行個體上的額外方法,它會被設定到執行個體上。 |
| | 使用者定義的[鈎子或回調](3.3 Model Hooks.md) |
| | 使用者定義的[驗證器](3.2 Model Validations.md) |
| | 為了支援在 上設定 而不提倡使用 |
| | 允許你開啟或者禁用單例行為。它叫做 ,但是和緩存毫無關系。 |
| | 不推薦。在屬性修改時自動儲存模型。 |
| | 是否自動擷取關聯 |
| | 自動擷取關聯的深度 |
| | 删除執行個體時是否要删除關聯 |