节点js – 如何使用连接variables

我想创build一个数据库连接结构,允许多个数据库连接,但我有保存连接的问题,所以我可以在mssql.request()

我login窗体用户必须select哪个数据库要使用,所以我想在触发select框数据库与此代码工作正常。

LoginController.js

 setDB: (req, res) => { var connection = db.setDB(req.params.dbname); connection.then(result => { res.send(result); }); }, 

db.setDB

 const mssql = require('mssql'); module.exports = { setDB: (req, res) => { console.log('Prepare to connect to ' + req); return new Promise(function (resolve, reject){ var result = makeConnection(req); result.then(value => { console.log('result: ' + value); if(value == 0) { console.log('Unknown database!'); resolve('Unknown database!'); } else if(value == 1) { console.log('Error trying to connect! Maybe wrong connection data.'); resolve('Error trying to connect! Maybe wrong connection data.'); } else if(value == 2) { console.log('Connection Done!'); resolve('Connection Done!'); } }).catch(err => { console.log(err); console.log('Error handle setDB() results.'); reject('Error handle setDB() results! Call tech guy.'); }); }) //return connection; } } function makeConnection(dbname) { return new Promise(function (resolve, reject){ console.log('Start connection....'); const configs = { Emp1: { user: "us", password: "pass", server: "ip", database: "Emp1", pool: { max: 20, min: 0, idleTimeoutMillis: 900000 } }, Emp2: { user: "us", password: "pass", server: "ip", database: "Emp2", pool: { max: 20, min: 0, idleTimeoutMillis: 900000 } } }; var config = configs[dbname]; if(config == undefined) { resolve(0); } global.conn = new mssql.Connection(config); conn.connect(function(err) { if (err) { console.log(err); resolve(1); } else { console.log('Database Connected!'); resolve(2); } }); }); } 

我这样做global.conn = new mssql.Connection(config); 尝试保存连接。

现在,如果我尝试访问一个链接(索引)做查询,我有错误,因为conn is not defined

 var db = require('../config/db'); var mssql = require('mssql'); var squel = require("squel"); var request = new mssql.Request(conn); module.exports = { index: (req, res) => { console.log("User Index"); request.query("SELECT * from us",(err, records) => { console.log(err); //console.log(records); res.send(records[0].username); }); } } 

我非常感谢您对更好的方式做出这样的看法,我没有看到关于多数据库连接的很多信息。 用户必须在login表单中select数据库,但是我必须保存数据库名称,但是如何? 我已经在caching里想了…我不知道,我真的需要一些build议。

有任何疑问请问我。

谢谢