Sequelize 中的 Model 和 Instance 的区别

阅读时长 4 分钟读完

在使用 Sequelize 进行数据持久化时,Model 和 Instance 是开发者经常需要接触并区分的概念。本文将详细介绍 Sequelize 中 Model 和 Instance 的区别,帮助开发者更好地理解和使用它们。

Model

Model 相当于数据库中具体的表,它定义了数据表的结构和操作方法。在 Sequelize 中,定义一个 Model 需要指定以下信息:

  • 数据表名
  • 字段结构
  • 字段类型
  • 数据表引擎
  • 数据表字符集
  • 其他选项,例如 timestamps、paranoid、freezeTableName 等

以下是定义一个 User Model 的示例代码:

-- -------------------- ---- -------
----- --------- - --------------------
----- --------- - --- --------------------- ----------- ----------- -
  -------- -------
--

----- ---- - ------------------------ -
  --- -
    ----- ------------------
    ----------- -----
    -------------- ----
  --
  ----- -----------------
  ---- ------------------
  ------ ----------------
-- -
  ------- ---------
  -------- ----------
  ----------- -----
  --------- -----
  ---------------- ----
--

上面的代码定义了一个 User Model,包含了 id、name、age 和 email 四个字段,以及一些其他选项。其中 primaryKey 指定了 id 为主键,autoIncrement 指定了主键自增,timestamps 指定了记录的创建时间和更新时间,paranoid 指定了软删除机制,freezeTableName 则指定了表名不为复数形式。

Instance

Instance 则是 Model 的具体实例,操作时主要是对 Instance 进行增删改查等操作。在 Sequelize 中,添加一个 Instance 有以下两种方式:

1. 使用 create 方法

使用 create 方法可以直接新建一个实例并将其保存至数据库。示例代码如下:

2. 使用 build 和 save 方法

使用 build 方法可以新建一个空的实例,之后使用 save 方法保存该实例至数据库。示例代码如下:

增删改查操作

使用 Sequelize 进行增删改查操作主要包含以下几个常用方法:

  • create:新建一个实例并将其保存至数据库
  • findOne:根据条件查询一个实例
  • findAll:根据条件查询多个实例
  • increment 和 decrement:自增或自减一个属性值
  • update:更新一个或多个实例
  • destroy:删除一个或多个实例

以下是对上面方法的示例代码:

-- -------------------- ---- -------
-- -------------
-------------
  ----- -----
  ---- ---
  ------ ----------------------
--

-- ------
--------------
  ------ - ----- ---- -
------------ -- -
  -----------------------
--

-- ------
--------------
  ------ - ---- - ------------------ -- - -
------------- -- -
  --------------------------
--

-- -------
--------------
  ------ - ----- ---- -
------------ -- -
  ---------------------
--

-- ------
------------- ----- ---- -- - ------ - ----- ---- - --

-- ------
-------------- ------ - ----- ---- - --

总结

本文详细介绍了 Sequelize 中 Model 和 Instance 的区别,以及常见的增删改查操作。希望本文能对开发者更好地理解和使用 Sequelize 有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a8c79f48841e9894527d6d

纠错
反馈