本文概述
- 要求
- 实现
- 提示
在本文中, 你将在几分钟内学习如何使用Node.js轻松连接到MySQL服务器中的任何数据库。
要求要使用Node.js与MySQL进行互操作(在我们的示例中, 我们使用的Xampp包括PHPMyAdmin), 你需要以下名为mysql的节点包。
你可以在Node.js命令提示符下执行以下命令, 将此包添加到项目中:
npm install mysql
然后, 你将可以要求mysql模块。
注意:此模块是异常安全的。这意味着你可以继续使用它, 即使你的一个回调函数引发了使用” uncaughtException” 或域捕获的错误。
实现有两种访问MySQL数据库的方法, 当你只有一个数据库时, 可以选择简单的连接来快速访问。你应该使用池化连接来简化共享单个连接或管理多个连接的过程。
连接简单
以下示例公开了具有其最基本组件的连接。需要mysql服务, 将凭据作为createConnection方法中的第一个参数添加, 继续连接到数据库, 执行查询, 最后关闭连接。
你可以在此处阅读官方文档中连接对象的所有可用选项。
// Get the mysql servicevar mysql = require('mysql');
// Add the credentials to access your databasevar connection = mysql.createConnection({host: 'localhost', user: '<
USERNAME that tipically is root>
', password : '<
PASSWORD or just use null if youre working lcocally', database : '<
DATABASE-NAME>
'});
// connect to mysqlconnection.connect(function(err) {// in case of errorif(err){console.log(err.code);
console.log(err.fatal);
}});
// Perform a query$query = 'SELECT * from MyTable LIMIT 10';
connection.query($query, function(err, rows, fields) {if(err){console.log("An error ocurred performing the query.");
return;
}console.log("Query succesfully executed: ", rows);
});
// Close the connectionconnection.end(function(){// The connection has been closed});
池连接
var mysql = require('mysql');
var pool= mysql.createPool({host: 'example.org', user: 'bob', password : 'secret', database : 'my_dbName'});
pool.getConnection(function(err, connection) {// Use the connectionconnection.query( 'SELECT something FROM sometable', function(err, rows) {// And done with the connection.connection.release();
// Don't use the connection here, it has been returned to the pool.});
});
// The pool will emit a connection event when a new connection is made within the pool.// If you need to set session variables on the connection before it gets used, you can listen to the connection event.pool.on('connection', function (connection) {console.log("Connected");
// Set a session variable//connection.query('SET SESSION auto_increment_increment=1')});
// <
<
<
CLOSE THE CONNECTION USING pool.end >
>
>
// When you are done using the pool, you have to end all the connections or the Node.js // event loop will stay active until the connections are closed by the MySQL server. // This is typically done if the pool is used in a script or when trying to gracefully shutdown a server.// To end all the connections in the pool, use the end method on the pool:pool.end(function (err) {// all connections in the pool have ended});
提示你可以使用通配符来创建易于阅读和维护的代码:
connection.query('SELECT * FROM `books` WHERE `author` = ?', ['David'], function (error, results, fields) {// error will be an Error if one occurred during the query// results will contain the results of the query// fields will contain information about the returned results fields (if any)});
除了将这些选项作为对象传递外, 还可以将url字符串用于连接。例如:
var connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&
charset=BIG5_CHINESE_CI&
timezone=-0700');
为了避免SQL注入攻击, 在SQL查询中使用用户提供的数据之前, 应始终对其进行转义。你可以使用mysql.escape(), connection.escape()或pool.escape()方法进行操作:
var userId = 'some user provided value';
var sql= 'SELECT * FROM users WHERE id = ' + connection.escape(userId);
connection.query(sql, function(err, results) {// Results ...});
【如何使用Node.js连接到MySQL数据库】玩得开心 !
推荐阅读
- 如何使用PeerJS和Node.js与WebRTC创建视频聊天
- 营销中的机器学习-强大的应用程序可以尝试
- 与你合作的软件开发团队
- 使API文档工作所需的7个基本要素
- AI和机器学习如何重塑员工敬业度()
- 为什么共享办公空间吸引开发人员
- 如果你想在2020年取得成功,则需要关注的技术趋势
- 如何创建在线课程网站(原因和结果)
- 腾讯云服务器如何挂载云硬盘(Linux版本)()