如何在SequelizeJS中加入?

时间:2018-04-10 19:51:59

标签: mysql node.js sequelize.js

这是我的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的东西,但是在模型定义中定义引用有什么用?

1 个答案:

答案 0 :(得分:1)

根据 DOC

  

有时您可能想要引用另一个表,而不添加任何表   约束或关联。在这种情况下,您可以手动添加   引用属性到模式定义,并标记关系   他们之间。

<强> Association :

  

在sequelize中创建关联是通过调用其中一个来完成的   belongsTo / hasOne / hasMany / belongsToMany函数在一个模型上(   来源),并提供另一个模型作为第一个参数   功能(目标)。

     
      
  1. hasOne - 向目标和单一关联添加外键   mixin来源。
  2.   
  3. belongsTo - 向源添加外键和单个关联mixins。
  4.   
  5. hasMany - 将一个外键添加到目标,并将多个关联混合添加到源。
  6.   
  7. belongsToMany - 使用连接表创建N:M关联,并将多个关联混合添加到源。联结表是   使用sourceId和targetId创建。
  8.         

    创建关联将向外部添加外键约束   属性。所有关联在更新时使用CASCADE,在SET NULL上使用   删除,n:m除外,它在删除时也使用CASCADE。

我认为这会清除你的怀疑。