orm2 中文文档 3. 定义模型
译者:飞龙
来源:Defining Models
在[连接](1. Connecting to Database.md)之后,你可以使用连接对象(db
)来定义你的模型。你需要指定模型的名称,一个用于描述的属性和一些(可选的)选项。下面是一个简短的例子:
var Person = db.define('person', {id: {type: 'serial', key: true}, // the auto-incrementing primary keyname: {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
|
删除实例时是否要删除关联 |
orm2 中文文档 3. 定义模型相关推荐
- orm2 中文文档 3.3 模型钩子
译者:飞龙 来源:Model Hooks 如果你想要监听发生在模型实例上的事件,你可以附带一个函数,它会在发生时调用. 现在支持下面这些事件: afterLoad:(无参数)加载和准备所用实例之后: ...
- orm2 中文文档 3.2 模型验证器
译者:飞龙 来源:Model Validations Enforce模块用于验证数据.对于使用以前的验证器的用户,还可以继续使用,它们中的一部分整合到了enforce,剩余部分还没有.推荐你开始使用o ...
- orm2 中文文档 3.1 模型属性
译者:飞龙 来源:Model Properties 模型和一些关联具有一个或多个属性,每个属性有类型以及一些可选设置,你可以自行选择它们(或使用默认设置). 类型 受支持的类型是: text:文本字符 ...
- orm2 中文文档 4. 定义关联
译者:飞龙 来源:Defining Associations 关联是一个或多个[模型之间](3. Defining Models.md)的关系. 关联的类型: [hasOne(一对多)](4.1 ha ...
- orm2 中文文档 5. 同步和删除模型
译者:飞龙 来源:Syncing and dropping models 同步是一项功能方法,可以在数据库里为你的模型和关联创建所需的表来工作.现存的表并不会被替换,它们只会在不存在的时候被创建. 同 ...
- orm2 中文文档 4.1 hasOne(多对一关系)
译者:飞龙 来源:hasOne hasOne关联是一种多对一的关系,意思是你定义的模型可以有多个实例指向一个其它的实例(所属相同模型或不同模型). 用法 Animal.hasOne(associati ...
- orm2 中文文档 2. 设置
译者:飞龙 来源:Settings 设置用于储存键值对.设置对象是orm(默认值)上的实例,之后会为每个db连接和每个定义过的Model建立快照.所以orm.settings上的更改只会作用于更改之后 ...
- orm2 中文文档 1. 连接到数据库
译者:飞龙 来源:Connecting to Database 在连接之前,你需要一个受支持的驱动.下面是一些测试过的驱动及其版本,把你所需要的加入到package.json中. 驱动 npm 包 版 ...
- orm2 中文文档 8. 聚合
译者:飞龙 来源:Aggregation 如果你需要从一个模型中获取一些聚合值,你可以使用Model.aggregate().下面通过一个例子来展示: Person.aggregate({ surna ...
最新文章
- SmartNIC/DPU — 技术方向
- Socket通信实例
- 每天天一个linux命令echo,每天一个linux命令-echo(示例代码)
- NLP-基础知识-005(专家系统)
- CH5E02 花店橱窗【线性DP】
- Python中安装moveit_commander,顺带解决rospy模块未安装问题
- 两物体的相对速度公式_最全物理公式合集,高考这一份就够了!
- jQuery 的原型关系图
- DOM Element对象的offsetXXX方法
- hdu 1286找新朋友 (简单数学题)
- 5月16日亮相!华硕ZenFone 6新旗舰曝光:无刘海全面屏加持
- Java开发技术大杂烩(三)之电商项目优化、rabbitmq、Git、OSI、VIM、Intellj IDEA、HTTP、JS、Java...
- hdu 1209 clocks wrong answer 我的错误代码(没审好题唉,角度一样后,还要按小时排序。...
- 【割点】【割边】tarjan
- NFT Insider #49:YGG学员总量突破20000名,《南华早报》在The Sandbox中构建香港天星码头
- 学渣的刷题之旅 leetcode刷题 13.罗马数字转整数
- #Python中创建一个字符串映射表
- WiFi万能钥匙总裁:下一步重点是场景化大数据
- 用户画像建模(客户基本属性表,客户营销信息表)
- 哨兵2号真彩色影像合成
热门文章
- docker 日志_Filebeat 采集 Docker 日志
- 【声学基础】概述——吸收
- mysql report参数_mysqlreport 使用说明
- java nature_什麼是Eclipse項目的JavaEMFNature nature?
- endnote如何导入txt文件_python如何处理txt及excel文件
- python sys os_python常用的一些东西——sys、os等(转)
- 【重难点】【Java基础 05】说一说你平时遇到的异常、什么情景下会用到反射、反射的底层原理
- linux下安装jmeter
- Atlas 配置高可用
- 【C++】C++未定义行为