这是我的Room表的模型定义
sequelize.define("room", {
id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true },
name: DataTypes.STRING,
business_id: {
type: DataTypes.INTEGER,
references: {
model:"business,
key: "id"
}
}
});
这是生意
sequelize.define("business", {
id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true },
name: DataTypes.STRING,
});
现在考虑我和我一起id
房间,我希望使用外键获得与之相关的业务。在正常SQL
我可以使用inner join
我知道Sequelize中有类似于Association的东西,但是在模型定义中定义引用有什么用?
答案 0 :(得分:1)
根据 DOC :
有时您可能想要引用另一个表,而不添加任何表 约束或关联。在这种情况下,您可以手动添加 引用属性到模式定义,并标记关系 他们之间。
<强> Association : 强>
在sequelize中创建关联是通过调用其中一个来完成的 belongsTo / hasOne / hasMany / belongsToMany函数在一个模型上( 来源),并提供另一个模型作为第一个参数 功能(目标)。
- hasOne - 向目标和单一关联添加外键 mixin来源。
- belongsTo - 向源添加外键和单个关联mixins。
- hasMany - 将一个外键添加到目标,并将多个关联混合添加到源。
- belongsToMany - 使用连接表创建N:M关联,并将多个关联混合添加到源。联结表是 使用sourceId和targetId创建。
醇>创建关联将向外部添加外键约束 属性。所有关联在更新时使用CASCADE,在SET NULL上使用 删除,n:m除外,它在删除时也使用CASCADE。
我认为这会清除你的怀疑。