一对多关联 (hasMany)

一对多关联将一个来源与多个目标连接起来. 而多个目标接到同一个特定的源.

  1. class User extends Model {}
  2. User.init({/* ... */}, { sequelize, modelName: 'user' })
  3. class Project extends Model {}
  4. Project.init({/* ... */}, { sequelize, modelName: 'project' })
  5. // 好. 现在,事情变得更加复杂(对用户来说并不真实可见).
  6. // 首先我们来定义一个 hasMany 关联
  7. Project.hasMany(User, {as: 'Workers'})

这会将根据你的设置添加 projectIdproject_id 属性到 User.Project 的实例将获得访问器 getWorkerssetWorkers.

有时你可能需要在不同的列上关联记录,你可以使用 sourceKey 选项:

  1. class City extends Model {}
  2. City.init({ countryCode: Sequelize.STRING }, { sequelize, modelName: 'city' });
  3. class Country extends Model {}
  4. Country.init({ isoCode: Sequelize.STRING }, { sequelize, modelName: 'country' });
  5. // 在这里,我们可以根据国家代码连接国家和城市
  6. Country.hasMany(City, {foreignKey: 'countryCode', sourceKey: 'isoCode'});
  7. City.belongsTo(Country, {foreignKey: 'countryCode', targetKey: 'isoCode'});

到目前为止,我们解决了单向关联. 但我们想要更多! 让我们通过在下一节中创建一个多对多的关联来定义它.