在sequelize当中我们可以以下方式定义关联关系
案例1
现在有一张员工表和一个部门表
员工表当中有一个department_id 与部门表当中的id对应
想要查询所有员工信息,以及每个员工对应的部门信息
分析:
1、这是什么关系?一对一、一对多还是多对多?
可想而知员工表当中每一条员工信息里边的department_id 只会指向部门表当中一条数据,所以应该是一对一关系。
所以可以选择hasOne或者belongsTo
2、谁是主表谁是从表?
通过外键在员工表当中,可以判得员工表是从表。而部门表是主表
所以在employees模型当中定义与部门模型关系时候可以使用
belongsTo
employees.belongsTo(models.departments, {
foreignKey: 'department_id',
primaryKey: 'id'
})
案例2
如果现在反过来,在部门模型当中定义与员工关联模型
分析:
1、这是什么关系?一对一、一对多还是多对多?
一个部门对应多个员工
所以可以选择hasMany或者belongsTo
2、谁是主表谁是从表?
通过外键在员工表当中,可以判得员工表是从表。而部门表是主表
所以在departments模型当中定义与部门模型关系时候可以使用
hasMany
departments.hasMany(models.employees, {
foreignKey: 'department_id',
primaryKey: 'id'
})
然后里边的foreightKey 不管谁是用belongsTo还是hasOne还是hasMany 都是写的从表里边的外键,promaryKey是主表的id 与 外键对应的那个id
对于其他的关系都可以通过以上步骤去推断