closures连接MySQL Node.js
我正在开发一个ExpressJS和MySQL的Node应用程序。 我正在使用这个模块https://github.com/felixge/node-mysql/ ,我正在学习它的使用呢。 我遇到了如何正确closures连接的麻烦。
这就是我所做的:
app.post('/example', function (req, res) { //BD var connection = mysql.createConnection({ host: config.database.host, port: config.database.port, user: config.database.user, password: config.database.password, database: config.database.database }); var sql = ''; if (varExample != null) { sql = 'Random query'; connection.query(sql, function (err, results) { //Get results connection.end(); }); } });
有时我必须多次调用这个方法才能在数据库中插入数据。 在那一刻,我得到一个错误“太多的连接”。
在这些情况下closures连接的方法是什么?
你不应该做的是每次请求时都打开一个连接。 每次连接都很慢,其次驱动程序通常为您打开一个连接池,所以不应该是一个问题。 没有必要closures连接到MySQL。
基本上你必须这样做
//BD var connection = mysql.createConnection({ host: config.database.host, port: config.database.port, user: config.database.user, password: config.database.password, database: config.database.database }); app.post('/example', function (req, res) { var sql = ''; if (varExample != null) { sql = 'Random query'; connection.query(sql, function (err, results) { //Get results }); } });
编辑:添加池选项有一个连接池基本上是我们大多数人想要一个服务器,要做许多查询。 它只是稍微改变你如何创build连接。
var connection = mysql.createPool({ connectionLimit : 10, host : 'example.org', user : 'bob', password : 'secret' });
我意识到已经有了一个可以接受的答案,但是你真正应该做的是创build一个数据库池,其他答案真的没有例子。 你必须设置这个有点不同于与库创build一个正常的数据库连接。
-edit您不必担心closures连接。
var mysql = require('mysql'); var pool = mysql.createPool({ connectionLimit : 10, host : 'example.org', user : 'bob', password : 'secret' }); pool.query('SELECT 1 + 1 AS solution', function(err, rows, fields) { if (err) throw err; console.log('The solution is: ', rows[0].solution); }); exports.Pool = pool;
- 从node-mysql连接到Amazon RDS(MySQL)时出错
- 数据库连接的最佳数量(node-mysql)
- NodeJS与mysql的asynchronous令我感到困惑
- “INSERT INTO”不会将数据插入到我的sql数据库中
- 如果我们不closuresmysql节点js模块中的mysql连接,是否有任何问题
- 使用mysql模块为Nodejs存储JSON
- Node-MySQL – Query()方法中的转义与Mysql.Escape()/ Mysql.EscapeId()
- node.js-MySQL COUNTlogging的数量
- 什么是最好的Node.js MySQL模块连接到MySQL通过SSL?