我了解到,在Sequelize中,我们可以通过两种方式将外键添加到子模型中。一种是使用hasOne
,belongsTo
,hasMany
等。另一种方法是在我们像这样配置模型时在道具中添加references
:
trainer_id: {
type: DataTypes.INTEGER,
references: {
model: "trainers",
key: "id"
}
}
那么它们有什么区别?我发现使用refresences比较简单。如果您能给我一些建议,我将不胜感激。
最佳答案
您正在执行的操作-添加references
键-仅表示在数据库级别设置了外键。使用hasOne
,belongsTo
,hasMany
等将执行上面的操作,但此外,它还将为模型实例添加相关的便捷方法以获取关联的记录。
例如。如果您使用BlogPost belongsTo
类别,则可以调用blogPost.getCategory()
,sequelize将为您处理。它自动将getCategory
方法添加到您的blogPost实例中,因为您定义了belongsTo
关系。据我所知,如果您不声明hasOne
/ belongsTo
/ hasMany
关联,而仅使用references
,则不包括那些额外的便捷方法。