【知识整理】Node.js-Sequelize之模型(表)之间的关联关系

一。Sequelize:

Sequelize类是引用sequlize模块后获取一个顶级对象,我们通过它来创建sequlize实例,也可以通过该对象来获取模内其它对象的引用,如:Utils工具类、Transaction事务类等。创建实例后,可以通过实例来创建或定义Model(模型)、执行查询、同步数据库结构等操作。

二。模型之间存在各种关系,如:一对一、一对多、多对多等。模型件的关系本质上是对其代表的数据库中表之间的关系的描述,通过这些关系可以实现数据库中表之间主/外键约束的创建。查询时也可以基于这些关系,生成在数据库中执行的简介查询或复合查询SQL语句。
三。一对一关联:一对一关联是由一个单一的外键,实现两个模型之间的精确关联。
1.BelongsTo(属于):BelongsTo关联表示一对一关系的外键存在于源模型。
如,下例中Player是通过外键关键的Team的一部分。外键存在于Player中。

var Player = sequelize.define('player',{});
var Team = sequelize.define('team', {});
Player.belongsTo(Team);
//会为Player添加一个teamId属性以保持与Team主键的关系.

2.hasOne(拥有一个):表示一对一关系的外键存在于目标模型.

如,下例中User是通过外键关联的Project的一部分,外键存在于User中

var User = sequelize.define('user'.{});
var Project = sequelize.define('project',{});
Project.hasOne(User)
//hasOne会添加一个projectId属性到User模型中,另外,Project.prototype中会增加根据传入的第一个定义参数生成的访问器方法getUser和setUser值.

四。一对多关联:是指一个源模型联接多个目标模型,反之目标模型都会有一个明确的源。

1.hasMany(有一些)

如,下例中一个Project关联了多个User

var User = sequelize.define('user',{});
var Project = sequelize.define('project', {as : 'Works'});
Project(源模型).hasMany(User(目标模型));
//会向User中添加一个projectId属性,Project的实例中会有访问器getWorks和setWorks。这是一种单项关联关系。

五。多对多关联:是指一个源模型连接多个目标模型。而且,目标模型也可以有多个相关的源。

Project.belongsToMany(User, {through : 'UserProject'});
User.belongsToMany(Project, {throught: 'UserProject'});
//这会创建一个新模型UserProject,其中projectId和userId两个外键。定义through选项后,Sequelize会尝试自动生成名字。
//在本例中,会为User添加方法getUsers,setUsers,addUser,addUsers到Project中。getProjects,setProjects,addProject,addProjects到User中.
    原文作者:qq_19891827
    原文地址: https://blog.csdn.net/qq_19891827/article/details/77967044
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞