mysql - 在应用程序中初始化一个mysql池并在模块中重用

标签 mysql node.js

我是 node 的新手,并尝试为我的应用程序获得一个好的设计模式。 我做了一个模块来创建一个池

var mysql = require('mysql');

var pool  = mysql.createPool({
  host     : 'host',
  user     : 'user',
  password : 'pwd',
  database : 'db'
});

exports.pool = pool;

我可以通过要求在我的模块中重用它:

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

现在我想在 app.js 中设置池的选项,模块中的内容如下:

var mysql = require('mysql');

var pool  = mysql.createPool(options);

exports.pool = pool;

...在 app.js 中,我最初必须设置此池:

ar options = {...}

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

但这行不通。我在想什么?

最佳答案

您可以使用以下模式来初始化您的池一次,然后在您的应用程序的其余部分轻松引用它:

db.js

var mysql = require('mysql');

module.exports = {
    init: function(name, options) {
        return module.exports[name] = mysql.createPool(options);
    }
};

app.js

var options = {...}
var db = require('./db').init("pool1", options); // initialise once

something-else.js

var db = require('./db').pool1; // references the pool created in app.js

然后您还可以为其他数据库创建其他池。

关于mysql - 在应用程序中初始化一个mysql池并在模块中重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23558609/

相关文章:

ASP.NET配置MySQL数据库?

javascript - redux.js 中的 fetch(url) 使用错误的端口

node.js - Node.js 中的 AWS lambda 配置

node.js - Node 中第一次调用函数的时间

php - html div 中的 href = php 变量

mysqldump 不会转储我的数据

php - 代码逻辑不计算正确的数据

mysql - SQL 查找获取没有特定状态的项目

node.js - Mongoose 中 ref 集合的默认值

javascript - fetch() 无法设置从服务器接收到的 cookie?