当前位置: 首页 > 面试题库 >

node.js + mysql连接池

陆宾白
2023-03-14
问题内容

我试图弄清楚如何构造我的应用程序以最有效地使用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);
         })
     })
}

这是好方法吗?除了非常简单的示例(其中所有操作均在主app.js脚本中完成)之外,我真的找不到太多的使用mysql连接的示例,因此我真的不知道约定/最佳实践是什么。

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

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


问题答案:

这是一个好方法。

如果只想建立连接,则将以下代码添加到池所在的模块中:

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

module.exports = getConnection;

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

使用完后,不要忘记终止连接:

connection.release();


 类似资料:
  • 本章节我们将为大家介绍如何使用 Node.js 来连接 MySQL,并对数据库进行操作。 如果你还没有 MySQL 的基本知识,可以参考我们的教程:MySQL 教程。 本教程使用到的 Websites 表 SQL 文件:websites.sql。 安装驱动 本教程使用了淘宝定制的 cnpm 命令进行安装: $ cnpm install mysql 连接数据库 在以下实例中根据你的实际配置修改数

  • 问题内容: 我的Node Web应用程序需要一个持久的MySQL连接。问题是每天大约发生几次这种情况: 这是我的连接代码: 如您所见,handleDisconnect代码不起作用。 问题答案: 使用mysql连接池。当连接断开时它将重新连接,您将获得额外的好处,即能够同时进行多个sql查询。如果您不使用数据库池,则您的应用将在等待当前运行的数据库请求完成时阻止数据库请求。 我通常定义一个数据库模块

  • 我正在尝试将node.js连接到MySQL,但失败了。我已经安装了MySQL和相关库。如何解决此错误?另外,如果我想让数据响应为原生的,我应该如何去做呢? 收到的错误消息:

  • 本文向大家介绍node.js通过Sequelize 连接MySQL的方法,包括了node.js通过Sequelize 连接MySQL的方法的使用技巧和注意事项,需要的朋友参考一下 一.通过koa2脚手架构建项目 1.1 安装koa-generator 在终端输入: 1.2 使用koa-generator生成koa2项目 成功创建项目后,进入项目目录,并执行npm install命令 1.3 启动项

  • 问题内容: Node.js异步I / O是否需要Redis连接池? 我看到的大多数Redis库都允许您创建客户端连接,但是连接池模块并不多,因此我认为它并不那么重要。 令我困惑的一件事是,Redis在一个Redis实例中默认具有16个不同/分段的数据库。 因此,如果创建一个连接池,则连接到16个数据库中的哪个数据库?您可以使用同一连接池一次连接所有16个吗? 是否存在一个Node.js Redis

  • 问题内容: 在Redis上使用node_redis Node.js模块时,我应该只使用一个连接,因为Redis是单线程进程,还是应该创建一个连接池来提高性能? 问题答案: 只需使用一个连接。这两个节点和Redis的是 有效的 单个线程。我认为拥有多个连接不会给您带来任何好处。在开始使用Redis进行开发之前,我问过类似的问题,似乎一个客户端/一个应用程序是非常有效的模式。