我已经了解到,在Sequelize中,我们可以通过两种方式为子模型添加外键。一种是使用hasOne
,belongsTo
,hasMany
等。另一种方法是在我们配置模型时将references
添加到道具中:
trainer_id: {
type: DataTypes.INTEGER,
references: {
model: "trainers",
key: "id"
}
}
那么它们的区别是什么?我发现使用refrences更简单。如果你能给我一些建议,我将不胜感激。
答案 0 :(得分:0)
您正在做的事情 - 添加references
密钥 - 只是意味着在数据库级别设置了外键。使用hasOne
,belongsTo
,hasMany
等将执行上述操作,但此外,它还会为模型实例添加相关的便捷方法以获取相关记录。
EG。如果您使用BlogPost belongsTo
类别,那么您将能够调用blogPost.getCategory()
并且sequelize会为您处理它。它会自动将getCategory
方法添加到您的blogPost实例,因为您定义了belongsTo
关系。据我所知,如果您没有声明hasOne
/ belongsTo
/ hasMany
关联,并且只使用references
,则不包括这些额外的便利方法。