在 web 开发中,使用数据库管理数据是非常重要的一个环节。而 MySQL 作为一款广受欢迎的关系型数据库,在 web 应用中得到了广泛应用。本文将介绍如何在 Fastify 应用中使用 MySQL,并提供详细的学习和指导意义以及示例代码。
准备工作
安装 Fastify 和 mysql2
首先,需要确保已经安装了 Node.js 开发环境。在命令行中执行以下命令,全局安装 Fastify 和 mysql2:
npm install -g fastify mysql2
创建数据库
在使用 MySQL 之前,需要创建一个新的数据库。可以在 MySQL 命令行客户端中执行以下命令:
CREATE DATABASE mydatabase;
创建数据表
接下来,在 mydatabase
数据库中创建一个名为 users
的数据表。可以在 MySQL 命令行客户端中执行以下命令:
USE mydatabase; CREATE TABLE users ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL );
在 Fastify 应用中使用 MySQL
配置数据库连接
为了使用 MySQL,需要使用 mysql2 库连接到该数据库。以下是如何配置数据库连接:
// javascriptcn.com 代码示例 const fastify = require('fastify')(); const mysql = require('mysql2/promise'); async function createDatabaseConnection() { const dbConfig = { host: 'localhost', user: 'root', database: 'mydatabase', password: '' }; const connection = await mysql.createConnection(dbConfig); return connection; } fastify.decorate('mysql', await createDatabaseConnection());
在上面的代码中,创建了一个名为 createDatabaseConnection
的异步函数,该函数返回一个 mysql2 连接对象。然后可以使用 fastify.decorate
方法将该连接对象添加到 Fastify 应用中,以便在整个应用程序中使用。
执行查询
现在已经可以使用 fastify.mysql
对象执行 SQL 查询语句,例如向 users
表插入一条新纪录:
// javascriptcn.com 代码示例 fastify.post('/users', async (request, reply) => { const { name, email, password } = request.body; try { const [results] = await fastify.mysql.execute( 'INSERT INTO users (name, email, password) VALUES (?, ?, ?)', [name, email, password] ); reply.send({ success: true }); } catch (err) { console.error(err); reply.send({ success: false }); } });
在上面的代码中,使用 fastify.post
方法将一个 POST 路由添加到 Fastify 应用中。当该路由被触发时,获取请求正文中的数据,并使用 fastify.mysql.execute
方法执行一条 SQL INSERT 语句。如果查询成功,则返回 JSON 响应 { "success": true }
,否则返回 { "success": false }
。
查询数据
另外,也可以使用 fastify.mysql.query
方法查询数据库并返回结果:
// javascriptcn.com 代码示例 fastify.get('/users', async (request, reply) => { try { const [results] = await fastify.mysql.query('SELECT * FROM users'); reply.send(results); } catch (err) { console.error(err); reply.send([]); } });
在上面的代码中,使用 fastify.get
方法将一个 GET 路由添加到 Fastify 应用中。当该路由被触发时,使用 fastify.mysql.query
方法执行一条 SQL SELECT 语句,并返回查询结果作为 JSON 响应。如果查询失败,则返回空数组 []
。
完整示例代码
以下是完整的 Fastify 应用程序代码,展示了如何使用 MySQL 插入和查询数据:
// javascriptcn.com 代码示例 const fastify = require('fastify')(); const mysql = require('mysql2/promise'); async function createDatabaseConnection() { const dbConfig = { host: 'localhost', user: 'root', database: 'mydatabase', password: '' }; const connection = await mysql.createConnection(dbConfig); return connection; } fastify.decorate('mysql', await createDatabaseConnection()); fastify.post('/users', async (request, reply) => { const { name, email, password } = request.body; try { const [results] = await fastify.mysql.execute( 'INSERT INTO users (name, email, password) VALUES (?, ?, ?)', [name, email, password] ); reply.send({ success: true }); } catch (err) { console.error(err); reply.send({ success: false }); } }); fastify.get('/users', async (request, reply) => { try { const [results] = await fastify.mysql.query('SELECT * FROM users'); reply.send(results); } catch (err) { console.error(err); reply.send([]); } }); fastify.listen(3000, (err, address) => { if (err) { console.error(err); process.exit(1); } console.log(`Server listening on ${address}`); });
总结
在本文中,我们介绍了如何在 Fastify 应用中使用 MySQL。首先,需要安装 Fastify 和 mysql2 库。然后,创建一个新的数据库和数据表。接下来,配置数据库连接,以便在 Fastify 应用中使用。最后,执行 SQL 查询和插入数据等操作。希望通过本文,您能够更好地掌握 Fastify 和 MySQL 在 web 开发中的使用。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6538cce47d4982a6eb1e1c7d