orm2 中文文档 4.1 hasOne(多对一关系)
译者:飞龙
来源:hasOne
hasOne关联是一种多对一的关系,意思是你定义的模型可以有多个实例指向一个其它的实例(所属相同模型或不同模型)。
用法
Animal.hasOne(association_name [, association_model [, options ] ]);
描述
association_name
是两个模型之间的关系名称‘association_model
是要关联的另一个模型(如果没有定义,假设为同一个模型,大多数情况下这可能不是你想要的);options
是一个对象,拥有一些和关联有关的,你可以调整的属性,比如自动获取,再比如表(SQL中)或者集合(MongoDB中)的名称。
示例
Animal.hasOne("owner", Person);
在背后,这条语句意思是Animal
集合拥有一个属性owner_id
(这个名称可以通过选项来修改,{field: 'ownerid'}
),它会指向Person
集合的某个人。如果关联并不是必须的,则可以为空。
这个关联也会创建一些额外的便利方法(叫做关联访问器)来帮助你管理它。访问器的名称也可以修改(同上,在选项里面),默认情况下,它们会拥有和关联名称相似的名称。例如,下面的代码展示了可以做类似这样的事情:
// assuming John is a Person..
Animal.find({ name: "Deco" }).first(function (err, Deco) {Deco.setOwner(John, function (err) {// John is now the owner of Deco});
});
其它的访问器:
getOwner(callback)
- 获取关联的所有者hasOwner(callback)
- (在回调中)返回这个动物是否拥有所有者removeOwner(callback)
- 移除和所有者的关联关系(如果存在的话)
关联反转
有时你希望通过对面的模型来访问关联。在上面的例子中,是通过Person
。你可以向关联传递一个选项来实现它。
Animal.hasOne('owner', Person, { reverse: "pets" });
之后,每个person
实例都有有两个便利方法:
getPets(callback)
- 获取所有和这个人有关联的动物setPets(cat, dog, callback)
- 移除所有和这个人有关联的动物,并且添加猫和狗
orm2 中文文档 4.1 hasOne(多对一关系)相关推荐
- orm2 中文文档 4.3 extendsTo(一对一关系)
译者:飞龙 来源:extendsTo 你可能想把可选的属性分割到另一个表中.每个扩展都会是一个新的表,其中每一行的唯一标识符是主模型实例的id. 例如: var Person = db.define( ...
- orm2 中文文档 4.2 hasMany(多对多关系)
译者:飞龙 来源:hasMany hasMany 是多对多的关系(包括连接表). 例如:Patient.hasMany('doctors', Doctor, { why: String }, { re ...
- orm2 中文文档 4. 定义关联
译者:飞龙 来源:Defining Associations 关联是一个或多个[模型之间](3. Defining Models.md)的关系. 关联的类型: [hasOne(一对多)](4.1 ha ...
- orm2 中文文档 1. 连接到数据库
译者:飞龙 来源:Connecting to Database 在连接之前,你需要一个受支持的驱动.下面是一些测试过的驱动及其版本,把你所需要的加入到package.json中. 驱动 npm 包 版 ...
- orm2 中文文档 8. 聚合
译者:飞龙 来源:Aggregation 如果你需要从一个模型中获取一些聚合值,你可以使用Model.aggregate().下面通过一个例子来展示: Person.aggregate({ surna ...
- orm2 中文文档 5. 同步和删除模型
译者:飞龙 来源:Syncing and dropping models 同步是一项功能方法,可以在数据库里为你的模型和关联创建所需的表来工作.现存的表并不会被替换,它们只会在不存在的时候被创建. 同 ...
- orm2 中文文档 3.3 模型钩子
译者:飞龙 来源:Model Hooks 如果你想要监听发生在模型实例上的事件,你可以附带一个函数,它会在发生时调用. 现在支持下面这些事件: afterLoad:(无参数)加载和准备所用实例之后: ...
- orm2 中文文档 3.2 模型验证器
译者:飞龙 来源:Model Validations Enforce模块用于验证数据.对于使用以前的验证器的用户,还可以继续使用,它们中的一部分整合到了enforce,剩余部分还没有.推荐你开始使用o ...
- orm2 中文文档 3.1 模型属性
译者:飞龙 来源:Model Properties 模型和一些关联具有一个或多个属性,每个属性有类型以及一些可选设置,你可以自行选择它们(或使用默认设置). 类型 受支持的类型是: text:文本字符 ...
最新文章
- 昨天还在 for 循环里写加号拼接字符串的那个同事,今天已经不在了
- 购物车清除的php,php-如何清除废弃的woocommerce购物车
- 【汇编】汇编学习入门-系列更新20180705
- [导入]一再的变故,终于决定何去何从.
- wordpress phpmyadmin_西部数码使用指南:虚拟主机WordPress部署SSL注意事项
- DC/OS 的安装与部署
- 创建一个dynamics 365 CRM online plugin (三) - PostOperation
- 使用VS 2019,.NET Core 3和Web API创建ASP.NET Core Blazor CRUD应用程序
- 利用python进行数据分析——使用groupby机制对pandas对象类的数据进行聚合与分组操作
- 玩转CSS盒子之 三角形盒子
- apollo本地启动调方式
- spring batch(批处理)
- shl归纳推理测试题库_SHL测评:KPMG经典24题,KPMG经典36题
- 弱电工程数据中心机房现状定位优化
- 八数码问题简单解决办法
- 操作系统清华 向勇 陈渝(RISC-V)(2)---操作系统与系统结构和程序设计语言
- 常见错误:无效的文件dsn
- React使用cra创建项目,开启装饰器
- java医院管理系统源码_医院管理信息系统
- promise是什么
热门文章
- (10)FPGA面试技能提升篇10(MATLAB)
- 信息审计服务器功能,审计服务器是什么意思?如何使用Audit和目录审计
- STM32F103:二.(3)DHT11温湿度
- 5004. boost 源码编译vs2019
- STM32编程中枚举和结构体的结合
- mysql全拼_Mysql中取得汉字的全拼、拼音首字母
- as2.0与php交互,Flash(AS2.0)与php通讯 分享
- 计算机二级mysql工具_2020年全国计算机二级MySQL复习知识点:优化工具
- MyBatis 阶段总结
- 解决maven加载不了oracle jdbc驱动包的问题