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

来源:互联网 发布:1390打印机清零软件 编辑:程序博客网 时间:2024/05/21 08:44

一。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中.
阅读全文
1 0
原创粉丝点击