私のログインフォームには、接続するデータベースを選択できるオプションがあります。そのため、その機能を作成しようとしています。Express js - データベース接続中のプロミス保留
db設定ファイルでは、という名前の関数があり、makeConnection
という別の関数に移動し、dbnameをパラメータとして送信し、この関数の結果を処理します。
問題は、2番目の関数は結果を返しませんが、promise pending
です。
この機能では、私はsetDB
機能で処理されるエラーを意味しますが、これは機能しません。
var mssql = require('mssql');
module.exports =
{
setDB: (req, res) =>
{
console.log('Prepare to connect to ' + req);
var result = makeConnection(req);
console.log(result);
if(result == 0)
{
res.send('Unknown database!');
}
else if(result == 1)
{
res.send('Error trying to connect!')
}
else if(result == 2)
{
res.send('Connection done!')
}
//return connection;
}
}
function makeConnection(dbname)
{
console.log('Start connection....');
return new Promise(function(resolve, reject) {
console.log('Database: '+ dbname);
var configs = {
Emp1: {
user: "us",
password: "pass",
server: "ip",
database: "Emp1"
},
Emp2: {
user: "us",
password: "pass",
server: "ip",
database: "Emp2"
}
};
var config = configs[dbname];
if(config == undefined)
{
return 0;
}
var connection = new mssql.Connection(config);
connection.connect(function(err)
{
if (err) {
console.log(err);
reject(err);
return 1;
} else {
resolve(connection);
console.log('Database Connected!');
return 2;
}
});
});
}
コンソールを印刷:
これを行うには良い方法は何ですか? 私は単一の接続を行い、各要求で接続をしたくない...そして、例えば、同時に2人の異なるデータベースで使用する準備をしなければならない。
これを行うより良い方法はどれですか?
は
ただ、プールを使用 - > https://www.npmjs.com/package/mysql#pooling-connections – Keith