我了解到,在Sequelize中,我们可以通过两种方式将外键添加到子模型中。一种是使用hasOnebelongsTohasMany等。另一种方法是在我们像这样配置模型时在道具中添加references

trainer_id: {
    type: DataTypes.INTEGER,
    references: {
      model: "trainers",
      key: "id"
    }
  }


那么它们有什么区别?我发现使用refresences比较简单。如果您能给我一些建议,我将不胜感激。

最佳答案

您正在执行的操作-添加references键-仅表示在数据库级别设置了外键。使用hasOnebelongsTohasMany等将执行上面的操作,但此外,它还将为模型实例添加相关的便捷方法以获取关联的记录。

例如。如果您使用BlogPost belongsTo类别,则可以调用blogPost.getCategory(),sequelize将为您处理。它自动将getCategory方法添加到您的blogPost实例中,因为您定义了belongsTo关系。据我所知,如果您不声明hasOne / belongsTo / hasMany关联,而仅使用references,则不包括那些额外的便捷方法。

09-16 17:07