在 Fastify 上使用 Sequelize ORM

阅读时长 6 分钟读完

在 Fastify 上使用 Sequelize ORM

如果你曾经使用过 Node.js 进行 web 开发,你很可能会使用 Fastify 作为你的 web 框架。而在数据库方面,ORM(Object-Relational Mapping)是非常常见的,因为它们能够让程序员使用面向对象的方式来与数据库进行交互。

在本文中,我们将讨论如何在 Fastify 上使用 Sequelize ORM。Sequelize 是 Node.js 中广泛使用的 ORM 之一,可以帮助我们轻松地连接和操作数据库。我们将深入探讨如何设置 Sequelize、如何定义模型(model)以及如何进行基本的 CRUD 操作。

安装和配置 Sequelize

首先,我们需要安装 Sequelize 和一些其他必要的库。运行以下命令来安装它们:

Sequelize 还支持其他数据库,如 PostgreSQL、SQLite、MariaDB 等。

我们将使用 dotenv 来存储敏感信息,如数据库凭据等。在根目录下创建一个名为 .env 的文件,然后添加以下内容:

接下来,我们需要创建一个名为 index.js 的新文件。首先,让我们引入 Sequelize 和 dotenv:

然后,我们需要使用 Sequelize 来连接数据库:

这里,我们使用 Sequelize() 构造函数来创建一个名为 sequelize 的新实例。我们向该构造函数传递数据库名称、用户名、密码和一些选项,如 host 和 dialect。

最后,我们需要测试数据库连接是否成功。我们可以使用 sequelize.authenticate() 来检查是否有任何错误:

如果连接成功,将打印 Connection has been established successfully.。如果有错误,则将打印 Unable to connect to the database: ,并将错误信息打印到控制台。

定义 Sequelize 模型

接下来,我们需要定义一个模型。在 Sequelize 中,模型类似于面向对象语言中的类,表示数据库中的表。

让我们创建一个名为 Book 的模型来表示书籍表。在 index.js 文件中添加以下内容:

-- -------------------- ---- -------
----- ---- - ------------------------ -
  ------ -
    ----- -----------------
    ---------- ------
  --
  ------- -
    ----- -----------------
    ---------- ------
  --
  -------------- -
    ----- ------------------
    ---------- ------
  --
---
展开代码

这里,我们使用 sequelize.define() 方法来创建一个名为 Book 的新模型。我们向方法传递两个参数:模型名称和字段定义。我们定义了 title、author 和 publishedYear 字段,并指定它们的数据类型和一些选项,如 allowNull

在上面的代码中,我们使用了 Sequelize 提供的 Integer、String 和 Date 数据类型。Sequelize 还提供了其他类型,如 BOOLEAN、DOUBLE 等。完整的数据类型列表可以在 Sequelize 官方文档中找到。

进行 CRUD 操作

现在我们已经连接到数据库并定义了模型,我们可以开始对数据进行 CRUD 操作了。

首先,让我们创建一些数据。我们可以使用 Book.create() 来创建一条新记录:

在上面的代码中,我们使用 Book.create() 创建一本书,然后将其打印到控制台。

接下来,我们可以使用 Book.findAll() 来查找所有书籍:

输出的books变量将包含所有书籍的数组。

我们还可以使用 Book.findOne() 来查找单个书籍:

输出的bookById变量将包含 id 为 1 的书籍对象。

我们可以使用 Book.update() 来更新已有记录,使用 Book.destroy() 来删除记录。

结论

在本文中,我们探讨了如何在 Fastify 上使用 Sequelize ORM。我们首先安装并设置了 Sequelize,然后定义了一个模型来表示书籍表。最后,我们学习了如何进行基本的 CRUD 操作,包括创建、查找、更新和删除记录。现在,您已经有了实现灵活数据库连接和操作的工具。

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

纠错
反馈

纠错反馈