大多数现实世界的应用程序都将数据保存在数据库中。因此,知道如何将你的应用程序连接到数据库并从其中获取数据是很重要的。
MySQL是数据库的一个很好的选择。它很容易使用,有广泛的支持,是最流行的关系型数据库之一。
在你开始之前
由于你将在本地MySQL服务器上测试连接代码,你需要先安装一个MySQL服务器。一旦你这样做了,创建一个空的数据库,并确保你有用户名和密码在手。
创建一个Node应用程序
在你的终端,运行以下命令,为你的节点应用程序创建一个新的文件夹。
mkdir node-mysql
导航到node-mysql 文件夹,用npm初始化它。
cd node-mysqlnpm init -y
这将产生一个package.json文件,在其他配置中,它将包含你项目的依赖性。
将Node连接到MySQL
有几种方法可以将你的node应用程序连接到MySQL。mysql2包是一个很好的选择,你可以用这样的命令来安装它。
npm install mysql2
为了进行连接,你需要几个值,即主机、端口、用户、数据库和密码。这里有一个例子,它连接到本地安装的MySQL服务器上一个名为nodedb的数据库。
const config = { host: "localhost", port: 3306, database: "nodedb", user: "root", password: "********",}
这是你要传递给连接方法的配置对象,如下面的程序。
const mysql = require("mysql2") const config = { host: "localhost", database: "db_name", user: "mysql_username", password: "mysql_password", connectionLimit: 100,} const connection = mysql.createConnection(config) connection.connect(function(err) { if (err) throw(err); console.log("Connected!");});
当你把数据库的详细信息传递给**mysql.createConnection()**方法时,你会创建一个连接对象。该连接对象将让你执行事务,如创建、删除或读取表。
例如,下面的代码在你连接的数据库中创建一个表。
connection.connect(function(err) { if (err) throw err; console.log("Connected!"); let createUser = `CREATE TABLE users (user_id INT(100), user_name VARCHAR(255), email VARCHAR(255))`; connection.query(createUser, function(err, results, fields) { if (err) { console.log(err.message); } });});
当你运行它时,这个查询将在数据库中创建一个名为users的新表。该查询使用了常见的语法,你可以根据自己的需要来创建一个适合你的MySQL数据库模式。
如果你只想做一个单一的连接,上面的连接程序可以正常工作。然而,当进行并发的连接请求时,最好使用连接池。
使用连接池将节点连接到MySQL
打开和关闭连接会变得很昂贵,特别是当有很多连接时。数据库连接池通过维护一个开放连接池来帮助减少这种成本。当一个请求被提出时,该池可以按要求提供一个开放的连接。
通过这样做,你可以节省时间,因为你不需要每次都打开一个新的连接。
使用下面的代码,在Node中创建一个连接池。
const mysql = require("mysql2"); const config = { host: "localhost", database: "db_name", user: "mysql_username", password: "mysql_password", connectionLimit: 100,} const pool = mysql.createPool(config); pool.query("SELECT * FROM some_table", (err, data) => { if (err) throw(err) console.log(data);});
记住要改变配置细节以符合你自己的环境。
安全地连接到MySQL
mysql2库简化了Node应用程序连接到MySQL数据库的过程。你可以使用一个单一的客户端或一个连接池。然而,如果你必须进行多次请求,最好使用连接池,因为它的成本较低。
连接到数据库只是第一步。你还应该确保你存储在数据库中的数据是安全的。毕竟,MySQL是攻击者的一个热门目标。你可以采取一些基本步骤来保护你的MySQL数据库服务器。设置一个强大的用户密码,限制远程登录,并且不要授予不必要的权限。