一对多关联 (hasMany)
一对多关联将一个来源与多个目标连接起来. 而多个目标接到同一个特定的源.
class User extends Model {}
User.init({/* ... */}, { sequelize, modelName: 'user' })
class Project extends Model {}
Project.init({/* ... */}, { sequelize, modelName: 'project' })
// 好. 现在,事情变得更加复杂(对用户来说并不真实可见).
// 首先我们来定义一个 hasMany 关联
Project.hasMany(User, {as: 'Workers'})
这会将根据你的设置添加 projectId
或 project_id
属性到 User.Project 的实例将获得访问器 getWorkers
和 setWorkers
.
有时你可能需要在不同的列上关联记录,你可以使用 sourceKey
选项:
class City extends Model {}
City.init({ countryCode: Sequelize.STRING }, { sequelize, modelName: 'city' });
class Country extends Model {}
Country.init({ isoCode: Sequelize.STRING }, { sequelize, modelName: 'country' });
// 在这里,我们可以根据国家代码连接国家和城市
Country.hasMany(City, {foreignKey: 'countryCode', sourceKey: 'isoCode'});
City.belongsTo(Country, {foreignKey: 'countryCode', targetKey: 'isoCode'});
到目前为止,我们解决了单向关联. 但我们想要更多! 让我们通过在下一节中创建一个多对多的关联来定义它.