如何在 Sequelize 中通过外键关联两个表格
Sequelize 是一个 Node.js ORM(Object-Relational Mapper),它支持多个数据库,如 MySQL、Postgres、SQLite 和 MSSQL。在 Sequelize 中,关联是指两个表之间的连接,通过一个表的列与另一个表中的列匹配来设置关系。这里我们将演示如何在 Sequelize 中通过外键关联两个表格。
第一步:建立模型
首先,我们需要为两个相关的模型创建模型。在这个例子中,我们将创建两个模型,一个是用户(User) 模型,另一个是订单(Order) 模型。用户模型如下:
-- -------------------- ---- ------- ----- - ------ --------- - - --------------------- ----- --------- - ------------------------ ----- ---- ------- ----- -- ----------- --- - ----- ------------------ -------------- ----- ----------- ---- -- --------- - ----- ----------------- ---------- ----- - -- - ---------- ---------- ------ --- -------------- - -----展开代码
订单模型如下:
-- -------------------- ---- ------- ----- - ------ --------- - - --------------------- ----- --------- - ------------------------ ----- ----- ------- ----- -- ------------ --- - ----- ------------------ -------------- ----- ----------- ---- -- ------- - ----- ------------------ ---------- ----- - -- - ---------- ---------- ------- --- -------------- - ------展开代码
我们需要在每个模型中定义一个主键(id),并且指定模型与 Sequelize 实例(sequelize) 和模型名称(modelName)之间的连接。
第二步:添加关联
我们的订单模型需要一个外键,指向用户模型的主键。我们可以在模型定义中添加一个外键,来实现这一点。需要注意的是,我们需要在定义时指示 Sequelize 引擎,订单模型与用户模型之间的联系并且是一对多的模型。
在 Order 模型中增加 userId 属性,这个属性会与 User 模型中的 id 属性关联起来。
-- -------------------- ---- ------- ----- - ------ --------- - - --------------------- ----- --------- - ------------------------ ----- ---- - ------------------ ----- ----- ------- ----- -- ------------ --- - ----- ------------------ -------------- ----- ----------- ---- -- ------- - ----- ------------------ ---------- ----- -- ------- - ----- ------------------ ----------- - ------ ----- -- ----- ---- ---- -- ---- -- ---------- ---- - -- - ---------- ---------- ------- --- -------------------- ---------------------- -------------- - ------展开代码
在这里,我们添加了一个 userId 属性,这个属性是一个整数,并且允许为空(null)。references 属性指定了关联的模型和列。此外,为了建立正向和反向关联关系,在两个相关的模型之间添加 hasMany 和 belongsTo。
第三步:使用关联
完成前两步后,我们可以通过使用 Sequelize 提供的内置方法来查询和操作关联的数据。
查询指定用户所有的订单:
-- -------------------- ---- ------- ----- ---- - -------------------------- ----- ----- - --------------------------- -------------- ------ - --- - -- -------- ------- ------------ -- - --------------------------- ---展开代码
查询指定订单的用户信息:
-- -------------------- ---- ------- ----- ---- - -------------------------- ----- ----- - --------------------------- --------------- ------ - --- - -- -------- ------ ------------- -- - ---------------------------- ---展开代码
在这里,我们通过每个模型中定义的关联属性(User.hasMany(Order)和Order.belongsTo(User))来查询和操作关联的数据。include 选项允许我们查询关联的数据。
通过这篇文章的指导和学习,我们可以成功地在 Sequelize 中通过外键关联两个表格。这样可以更方便地存储和查询数据。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d6bab1a941bf7134c9583f