节点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议。
有任何疑问请问我。
谢谢