在 Fastify 上使用 Sequelize ORM
如果你曾经使用过 Node.js 进行 web 开发,你很可能会使用 Fastify 作为你的 web 框架。而在数据库方面,ORM(Object-Relational Mapping)是非常常见的,因为它们能够让程序员使用面向对象的方式来与数据库进行交互。
在本文中,我们将讨论如何在 Fastify 上使用 Sequelize ORM。Sequelize 是 Node.js 中广泛使用的 ORM 之一,可以帮助我们轻松地连接和操作数据库。我们将深入探讨如何设置 Sequelize、如何定义模型(model)以及如何进行基本的 CRUD 操作。
安装和配置 Sequelize
首先,我们需要安装 Sequelize 和一些其他必要的库。运行以下命令来安装它们:
npm install sequelize mysql2 dotenv
Sequelize 还支持其他数据库,如 PostgreSQL、SQLite、MariaDB 等。
我们将使用 dotenv 来存储敏感信息,如数据库凭据等。在根目录下创建一个名为 .env
的文件,然后添加以下内容:
DB_HOST=localhost DB_USER=root DB_PASSWORD=mysecretpassword DB_NAME=mydatabase
接下来,我们需要创建一个名为 index.js
的新文件。首先,让我们引入 Sequelize 和 dotenv:
const Sequelize = require('sequelize'); require('dotenv').config();
然后,我们需要使用 Sequelize 来连接数据库:
const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASSWORD, { host: process.env.DB_HOST, dialect: 'mysql', // 使用 MySQL });
这里,我们使用 Sequelize()
构造函数来创建一个名为 sequelize 的新实例。我们向该构造函数传递数据库名称、用户名、密码和一些选项,如 host 和 dialect。
最后,我们需要测试数据库连接是否成功。我们可以使用 sequelize.authenticate()
来检查是否有任何错误:
try { await sequelize.authenticate(); console.log('Connection has been established successfully.'); } catch (error) { console.error('Unable to connect to the database:', error); }
如果连接成功,将打印 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()
来创建一条新记录:
const book = await Book.create({ title: 'The Catcher in the Rye', author: 'J.D. Salinger', publishedYear: 1951, }); console.log(`${book.title} has been created.`);
在上面的代码中,我们使用 Book.create()
创建一本书,然后将其打印到控制台。
接下来,我们可以使用 Book.findAll()
来查找所有书籍:
const books = await Book.findAll(); console.log(`All books:`, JSON.stringify(books, null, 2));
输出的books变量将包含所有书籍的数组。
我们还可以使用 Book.findOne()
来查找单个书籍:
const bookById = await Book.findOne({ where: { id: 1 } }); console.log(`Book by ID 1:`, JSON.stringify(bookById, null, 2));
输出的bookById变量将包含 id 为 1 的书籍对象。
我们可以使用 Book.update()
来更新已有记录,使用 Book.destroy()
来删除记录。
结论
在本文中,我们探讨了如何在 Fastify 上使用 Sequelize ORM。我们首先安装并设置了 Sequelize,然后定义了一个模型来表示书籍表。最后,我们学习了如何进行基本的 CRUD 操作,包括创建、查找、更新和删除记录。现在,您已经有了实现灵活数据库连接和操作的工具。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6733f6150bc820c582456c3a