Node.js连接MySQL实战与踩坑指南

2 下载量 162 浏览量 更新于2024-08-30 收藏 188KB PDF 举报
本文主要介绍了如何在Node.js环境中与MySQL数据库进行交互操作,以及在此过程中需要注意的一些事项。文章提到了作者的朋友在使用Node.js和MySQL时遇到的问题,并通过一个简单的Express应用示例来阐述解决方法。 在Node.js中,与MySQL数据库的交互通常需要借助名为`mysql`的npm包。安装此包的命令是`npm install mysql --save`。安装完成后,我们需要在项目中创建一个数据库操作文件,例如`db.js`,并在其中编写连接和查询数据库的代码。 首先,引入`mysql`包,然后创建一个对象并定义`query`方法,该方法接收SQL语句和回调函数作为参数。回调函数用于处理查询结果。在`query`方法内部,配置MySQL连接的属性包括主机(host)、用户名(user)、密码(password)、数据库名(database)和端口(port,默认为3306)。使用`mysql.createConnection()`创建连接对象,然后调用`connect()`方法尝试建立连接。如果连接失败,错误信息会通过回调函数返回。 在实际操作数据库时,我们还需要考虑异步编程的特点,Node.js中的数据库操作通常采用回调函数的方式处理。例如,执行查询操作时,可以这样编写: ```javascript var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'yourusername', password: 'yourpassword', database: 'yourdatabase' }); connection.connect(function(err) { if (err) throw err; console.log('Connected to MySQL server!'); // 执行查询操作 var sql = 'SELECT * FROM yourtable'; connection.query(sql, function (err, result) { if (err) throw err; console.log('Query result:', result); // 关闭连接 connection.end(); }); }); ``` 在这个例子中,`connection.query()`执行SQL查询,同样接收一个回调函数处理查询结果。当查询完成并处理结果后,记得关闭数据库连接,以释放资源。 此外,为了避免回调地狱,可以使用Promise或async/await语法来改进代码结构。例如,使用Promise: ```javascript connection.query(sql) .then(result => { console.log('Query result:', result); connection.end(); }) .catch(err => { console.error('Error executing query', err); connection.end(); // 保证即使出现错误也会关闭连接 }); ``` 或者使用async/await: ```javascript async function executeQuery(sql) { try { const [rows] = await connection.query(sql); console.log('Query result:', rows); } catch (err) { console.error('Error executing query', err); } finally { connection.end(); // 总是确保关闭连接 } } executeQuery('SELECT * FROM yourtable'); ``` Node.js与MySQL的交互涉及到安装`mysql`包、配置数据库连接、使用回调函数或Promise处理异步操作、以及正确地管理数据库连接。在实际开发中,还需考虑错误处理、事务支持、性能优化等因素,以确保稳定可靠的数据库操作。