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(通常也是数据库里面表的名称),它有三个属性(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)。

第二个对象指定了额外的选项:

选项名称类型描述
collectionString覆写数据库中表的名称
methodsObject模型实例上的额外方法,它会被设置到实例上。
hooksObject用户定义的[钩子或回调](3.3 Model Hooks.md)
validationsObject用户定义的[验证器](3.2 Model Validations.md)
idArray为了支持在properties上设置key: true而不提倡使用
cacheBoolean允许你开启或者禁用单例行为。它叫做cache,但是和缓存毫无关系。
autoSaveBoolean不推荐。在属性修改时自动保存模型。
autoFetchBoolean是否自动获取关联
autoFetchLimitNumber自动获取关联的深度
cascadeRemoveBoolean删除实例时是否要删除关联
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值