如何使node.js MySQL连接池在启动时可用

How to make node.js mysql connection pooling available on startup(如何使node.js MySQL连接池在启动时可用)
本文介绍了如何使node.js MySQL连接池在启动时可用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的showData.js脚本每次运行时都会调用

var pool  = mysql.createPool({

是否有办法在node.js服务器启动时创建连接池?

我已尝试将createPool添加到server.js,但在调用时似乎无法从showData.js脚本访问该对象

pool.getConnection(function(err,connection){

node.js服务器启动时是否需要启动连接池?

MySQL连接池是否仍然存在即使在调用Connection.Release并且脚本关闭后也是如此?

编辑@marco,我收到ReferenceError:未定义池。我知道问题是我没有将池拉入showData.js。根据node.js的说法,可以多次加载一个模块。

发件人https://nodejs.org/api/modules.html

缓存

模块在第一次加载后被缓存。这 表示每个调用Require(‘foo’)都将获得 返回完全相同的对象,如果它将解析为相同的 文件。

对Required(‘foo’)的多个调用可能不会导致模块代码 被执行了多次。这是一个重要的特点。有了它, 可以返回"部分完成"的对象,从而允许可传递 即使依赖项会导致循环,也要加载它们。

如果您希望一个模块多次执行代码,则导出 函数,然后调用该函数。

这是我的最新设置:

lib/dbpool.js

var mysql = require('mysql');
var pool  = mysql.createPool({
  connectionLimit : 10,
  host            : 'someco.com',
  user            : 'pinco',
  password        : 'pallino'
});

module.exports = pool;

server.js

const pool = require('./lib/dbpool');

showData.js

'use strict';
module.exports = router => {
    router.route('/show').post((req, res) => {
        pool.query('SELECT * FROM db.users', function(err, rows, fields) {

是否在server.js和showData.js中都需要以下行?

const pool = require('./lib/dbpool');

推荐答案

定义一个名为lib/dbpool.js的模块,内容如下:

var mysql = require('mysql');
var pool  = mysql.createPool({
  connectionLimit : 10,
  host            : 'someco.com',
  user            : 'pinco',
  password        : 'pallino'
});

module.exports = pool;

在您的应用程序代码中使用:

const pool = require('./lib/dbpool');

app.post('/your/app/url', (req, res) => {
  pool.query('your query', function(err, rows, fields) {
    if (err) throw err;
    /* Manage your results here */

  });
}

pool.ery实际执行:pool.getConnection(),然后是Connection.Query(),然后是Connection.Release()

这篇关于如何使node.js MySQL连接池在启动时可用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)
SSIS: Model design issue causing duplications - can two fact tables be connected?(SSIS:模型设计问题导致重复-两个事实表可以连接吗?)