前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >orm2 中文文档 4.1 hasOne(多对一关系)

orm2 中文文档 4.1 hasOne(多对一关系)

作者头像
ApacheCN_飞龙
发布2022-11-27 16:02:09
3860
发布2022-11-27 16:02:09
举报
文章被收录于专栏:信数据得永生信数据得永生

译者:飞龙 来源:hasOne

hasOne关联是一种多对一的关系,意思是你定义的模型可以有多个实例指向一个其它的实例(所属相同模型或不同模型)。

用法

代码语言:javascript
复制
Animal.hasOne(association_name [, association_model [, options ] ]);

描述

  • association_name是两个模型之间的关系名称‘
  • association_model是要关联的另一个模型(如果没有定义,假设为同一个模型,大多数情况下这可能不是你想要的);
  • options是一个对象,拥有一些和关联有关的,你可以调整的属性,比如自动获取,再比如表(SQL中)或者集合(MongoDB中)的名称。

示例

代码语言:javascript
复制
Animal.hasOne("owner", Person);

在背后,这条语句意思是Animal集合拥有一个属性owner_id(这个名称可以通过选项来修改,{field: 'ownerid'}),它会指向Person集合的某个人。如果关联并不是必须的,则可以为空。

这个关联也会创建一些额外的便利方法(叫做关联访问器)来帮助你管理它。访问器的名称也可以修改(同上,在选项里面),默认情况下,它们会拥有和关联名称相似的名称。例如,下面的代码展示了可以做类似这样的事情:

代码语言:javascript
复制
// 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。你可以向关联传递一个选项来实现它。

代码语言:javascript
复制
Animal.hasOne('owner', Person, { reverse: "pets" });

之后,每个person实例都有有两个便利方法:

  • getPets(callback) - 获取所有和这个人有关联的动物
  • setPets(cat, dog, callback) - 移除所有和这个人有关联的动物,并且添加猫和狗
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用法
  • 描述
  • 示例
  • 关联反转
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档