如何在 Sequelize 中通过外键关联两个表格

阅读时长 5 分钟读完

如何在 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

纠错
反馈

纠错反馈

程序员教程

精选优质教程,助你快速提升技术实力

程序员面试题库

海量优质面试题,助你轻松应对技术面试