mysql - node.js + mysql 连接池

标签 mysql node.js

我正试图弄清楚如何构建我的应用程序以最有效地使用 MySQL。我正在使用 node-mysql 模块。这里的其他线程建议使用连接池,所以我设置了一个小模块 mysql.js

var mysql = require('mysql');

var pool  = mysql.createPool({
    host     : 'localhost',
    user     : 'root',
    password : 'root',
    database : 'guess'
});

exports.pool = pool;

现在每当我想查询 mysql 时,我都需要这个模块,然后查询数据库

var mysql = require('../db/mysql').pool;

var test = function(req, res) {
     mysql.getConnection(function(err, conn){
         conn.query("select * from users", function(err, rows) {
              res.json(rows);
         })
     })
}

这是好方法吗?我真的找不到太多使用 mysql 连接的例子,除了一个非常简单的例子,所有事情都在 app.js 主脚本中完成,所以我真的不知道约定/最佳实践是什么。

我应该在每次查询后总是使用 connection.end() 吗?如果我在某个地方忘记了怎么办?

如何重写我的 mysql 模块的导出部分以仅返回一个连接,这样我就不必每次都编写 getConnection()?

最佳答案

这是一个很好的方法。

如果您只是想获得连接,请将以下代码添加到池所在的模块中:

var getConnection = function(callback) {
    pool.getConnection(function(err, connection) {
        callback(err, connection);
    });
};

module.exports = getConnection;

您仍然必须每次都编写 getConnection。但是你可以在第一次得到它时将连接保存在模块中。

用完别忘了结束连接:

connection.release();

关于mysql - node.js + mysql 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18496540/

相关文章:

javascript - 使用搜索索引过滤

sql - TEXT 字段的实际大小 (MySQL)

php - 当数据库中输入的日期为 YYYY-MM-DD 格式时,如何制作此格式?

mySQL删除外键

javascript - 编辑 Knex 插入以获取参数数组

javascript - 在 Node.js 中读取 XML 文件

mysql - 在通用 SQL 中同时检索(选择)或创建(插入)新行而不会发生冲突

php - 从 csv 文件中获取一个值,查看数据库,获取与该值匹配的记录的 id

node.js - 如何在 Node JS 中向多个 Kafka 主题分区发送数据

node.js - 在 BeagleBone Black 上使用 NodeJS 的网络摄像头