Sequelize 使用快速上手

阅读时长 5 分钟读完

简介

Sequelize 是一种基于 Node.js 的 ORM(Object-Relational Mapping)工具,用于处理 MySQL,PostgreSQL 等关系型数据库。它提供了许多重要的特性,如模型定义,数据库同步,查询构建器等,非常适合于创建复杂的 Web 应用程序。

在这篇文章中,我们将介绍如何在你的 Node.js 应用程序中使用 Sequelize,使你能快速上手并在你的项目中使用这个强大的工具。

安装

使用 Sequelize 可以通过 npm 轻松安装。你可以使用以下命令:

这里,我们要安装 sequelize 和我们使用的数据库驱动程序 mysql2。

连接到数据库

要使用 Sequelize,我们需要先连接到我们的数据库。以下是连接到 MySQL 数据库的示例:

这里,我们使用 Sequelize 构造函数创建了一个 Sequelize 实例,并传入了数据库名、用户名、密码和连接信息(这里使用的是 localhost)。根据你的配置,可以使用 Postgres、SQLite、MariaDB 或 MS SQL Server 等数据库。

定义模型

在 Sequelize 中,模型是对象。它们是用于映射到数据库表的 JavaScript 对象。以下是一个定义用户模型的示例:

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

这里,我们定义了一个名为 User 的模型,并在模型中列出了三个属性 —— username、email 和 password。我们使用 Sequelize 提供的几个数据类型定义了它们的类型。其中,username 和 password 设置了 allowNull 选项,这意味着这两个属性不能为空值。email 设置了 allowNull 为 false,同时将 unique 属性设置为 true,这意味着它将是唯一的。

同步到数据库

在定义了模型后,我们需要将其同步到数据库。以下是将所有模型同步到数据库的示例:

这里,我们使用 sync() 方法将所有定义的模型同步到数据库。如果你只需要同步单个模型,可以传入其名称作为参数。

查询数据

在 Sequelize 中,查询数据有多种方式。以下是使用 Model.findAll() 方法查询所有用户的数据:

这里,我们通过 User.findAll() 方法查询了所有用户,并使用 then() 方法在查询完成后打印结果。

创建新数据

要创建新数据,我们可以使用 Model.create() 方法。以下是将一个新用户添加到数据库的示例:

这里,我们向 User 模型中添加了一个新用户,并使用 then() 方法打印结果。

更新数据

要更新数据,我们使用 Model.update() 方法。以下是将一个用户的 email 更新为新值的示例:

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

这里,我们使用 update() 方法将 id 值为 1 的用户的 email 更新为 newemail@example.com。我们为 update() 方法传递了一个包含更新值和筛选条件的对象。

删除数据

要删除数据,我们使用 Model.destroy() 方法。以下是删除 id 值为 1 的用户的示例:

这里,我们使用 destroy() 方法将 id 值为 1 的用户删除。

结论

Sequelize 是一个非常有用的 ORM 工具,可以使我们更加简单地操作关系型数据库。在上面的几个例子中,我们介绍了一些 Sequelize 的基础知识,从如何连接到数据库到如何查询、创建、更新和删除数据。希望你现在可以更加熟悉 Sequelize,并开始在你的项目中使用这个强大的工具。

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

纠错
反馈