从Node.js连接到MySQL数据库服务器
简介:在本教程中,您将学习如何从node.js应用程序连接到MySQL数据库服务器。
为MySQL安装node.js驱动程序
有一些选项可以通过node.js应用程序与MySQL进行交互。
在本教程中,我们将向您展示如何使用MySQL的node.js驱动程序mysqljs / mysql。
首先,创建一个用于存储node.js应用程序(例如,node-mysql)的文件夹,然后使用npm init命令创建package.json文件:
npm init
其次,使用以下命令为MySQL软件包安装node.js:
npm install mysql
第三,在node-mysql文件夹内创建connect.js,用于存储连接到MySQL数据库服务器的代码。
我们将使用todoapp数据库进行演示,因此,您应该通过运行以下CREATE DATABASE语句在MySQL数据库服务器中创建数据库:
CREATE DATABASE todoapp;
创建数据库后,您就可以从Node.js应用程序连接到数据库了。
从node.js连接到MySQL数据库服务器
首先,使用以下语句导入mysql模块:
let mysql = require('mysql');
其次,通过调用createConnection()方法并提供有关MySQL服务器的详细信息(例如主机,用户,密码和数据库)来创建与MySQL数据库的连接,如下所示:
let connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'todoapp' });
在此示例中,我们在本地数据库服务器中创建了与todoapp数据库的连接。
第三,在连接对象上调用connect()方法以连接到MySQL数据库服务器:
connection.connect(function(err) { if (err) { return console.error('error: ' + err.message); } console.log('Connected to the MySQL server.'); });
connect()方法接受具有err参数的回调函数,如果发生任何错误,该函数将提供详细的错误。
让我们测试connect.js程序。
> node connect.js Connected to the MySQL server
如果看到"连接到MySQL服务器"消息,那么恭喜您,您已经成功从node.js应用程序连接到MySQL数据库服务器。
假设数据库服务器中不存在todoapps数据库,并且您尝试连接到该数据库,则会收到错误消息:
> node connect.js error: ER_BAD_DB_ERROR: Unknown database 'todoapps'
请注意,您在连接对象上调用的每个方法都按顺序排队和执行。
关闭数据库连接
要优雅地关闭数据库连接,请在连接对象上调用end()方法。
end()方法可确保在关闭数据库连接之前始终执行所有剩余查询。
connection.end(function(err) { if (err) { return console.log('error:' + err.message); } console.log('Close the database connection.'); });
要强制立即关闭连接,可以使用destroy()方法。
destroy()方法保证不会为该连接触发更多的回调或事件。
connection.destroy();
请注意,destroy()方法不像end()方法那样接受任何回调参数。
池连接
用于node.js模块的MySQL驱动程序为您提供了内置的连接池功能。
假设您要创建一个具有5个连接的连接池:
var pool = mysql.createPool({ connectionLimit: 5, host: 'localhost', user: 'root', password: '', database: 'todoapp' });
要从池中获取连接,请使用getConnection()方法:
pool.getConnection(function(err, connection) { // execute query // ... });
若要在完成连接后将连接返回到池,可以调用connection.release()。
之后,该连接将在池中可用,并可供其他人再次使用。
pool.getConnection(function(err, connection) { // execute query // ... connnection.release(); });
要关闭连接并将其从池中删除,请使用connection.destroy()方法。
如果下次需要连接,将在池中创建一个新连接。
请务必注意,池会延迟创建连接。
例如,如果您为池配置5个连接,但同时仅使用2个连接,则该池仅创建2个连接。
要关闭池中的所有连接,请使用池对象的end()方法,如下所示:
pool.end(function(err) { if (err) { return console.log(err.message); } // close all connections });
在本教程中,您学习了如何从node.js应用程序连接到MySQL数据库。