Fastify 是一个快速、低开销的 Web 框架,它提供了一个插件架构,允许开发人员轻松地扩展应用程序的功能。在使用 Fastify 构建 Web 应用程序时,我们通常需要与数据库进行交互,MySQL 是其中一种常见的关系型数据库,本文将介绍如何在 Fastify 中使用 MySQL 数据库。
安装 MySQL
在开始使用 MySQL 之前,需要先安装 MySQL 数据库并创建一个数据库。这里不再赘述,可以参考 MySQL 官方文档 进行安装和配置。
安装 MySQL 插件
Fastify 提供了一个 fastify-mysql 插件,可以轻松地在 Fastify 应用程序中使用 MySQL 数据库。安装 fastify-mysql 插件的命令如下:
npm install fastify-mysql
连接 MySQL 数据库
在使用 fastify-mysql 插件之前,需要先连接到 MySQL 数据库。在 Fastify 应用程序中,可以使用 fastify-mysql
插件提供的 mysql
对象来连接到 MySQL 数据库。连接示例代码如下:
-- -------------------- ---- ------- ----- ------- - -------------------- ----- ------------ - ------------------------ ------------------------------ - ----------------- ------------------------------------------------- -- ---------------- ----- --------- ------ -- - ----- ----- - ------------- ----- ------ - ----- ------------------- - - - -- ---------- ------------------------------ -- -------------------- ----- -- - -- ----- - ------------------ --------------- - ------------------- --------- -- ---- ------ --
在上面的代码中,我们使用 fastify-mysql
插件的 register
方法注册了 MySQL 插件,并指定了连接字符串。然后在路由处理程序中,我们可以使用 fastify.mysql
对象来访问 MySQL 数据库。在这个例子中,我们查询了 1 + 1 的结果并返回给客户端。
执行 SQL 查询
在连接到 MySQL 数据库之后,我们可以使用 fastify.mysql
对象来执行 SQL 查询。例如,我们可以查询一个表中的所有数据并返回给客户端。查询示例代码如下:
fastify.get('/users', async (request, reply) => { const mysql = fastify.mysql const result = await mysql.query('SELECT * FROM users') reply.send(result) })
在上面的代码中,我们使用 fastify.mysql
对象执行了一个 SELECT 查询,并将结果返回给客户端。
插入数据
除了查询数据之外,我们还可以向 MySQL 数据库中插入数据。在 Fastify 应用程序中,可以使用 fastify.mysql
对象的 query
方法执行 INSERT 查询。插入示例代码如下:
fastify.post('/users', async (request, reply) => { const mysql = fastify.mysql const { name, email } = request.body const result = await mysql.query('INSERT INTO users (name, email) VALUES (?, ?)', [name, email]) reply.send(result) })
在上面的代码中,我们使用 fastify.mysql
对象执行了一个 INSERT 查询,并将结果返回给客户端。
结论
本文介绍了如何在 Fastify 中使用 MySQL 数据库。我们首先安装了 fastify-mysql
插件,然后连接到 MySQL 数据库并执行 SQL 查询。通过本文的介绍,希望读者可以学习到如何在 Fastify 应用程序中使用 MySQL 数据库,并且能够在实际开发中应用这些知识。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67696a4e98e3e1ab1a90797b