Javascript Node js-如何使用require传递参数
在控制器中,我需要配置/db,但我需要发送一个带有数据库名称的参数,因为我可以有多个数据库 所以在控制器中,我这样做:Javascript Node js-如何使用require传递参数,javascript,sql-server,node.js,Javascript,Sql Server,Node.js,在控制器中,我需要配置/db,但我需要发送一个带有数据库名称的参数,因为我可以有多个数据库 所以在控制器中,我这样做: "use strict"; var connection = require('../config/db', function(db) { var db = "Emp1"; }); var connection = require('../config/db'); var mssql = require('mssql'); var request = new mss
"use strict";
var connection = require('../config/db', function(db)
{
var db = "Emp1";
});
var connection = require('../config/db');
var mssql = require('mssql');
var request = new mssql.Request(connection);
var parser = require('json-parser');
var squel = require("squel");
class RecpetionController
{
init(app)
{
app.get("/", (req, res) => this.index.call(this, req, res));
}
index(req, res)
{
console.log('Index reception')
}
}
module.exports = RecpetionController;
在config/db中,我有:
var mssql = require("mssql");
console.log('DATABASE');
if(db == 'Emp1')
{
var config =
{
user: "user",
password: "pass",
server: "ip",
database: "Emp1"
}
}
else if(db == 'Emp2')
{
var config =
{
user: "user",
password: "pass",
server: "ip",
database: "Emp2"
}
}
var connection = new mssql.Connection(config);
connection.connect(function(err)
{
console.log(err);
});
module.exports = connection;
那么我是以正确的方式传递来自控制器的值
如何接收config/db中的值
如果在config/db I console.logarguments中,它不会显示任何具有db值的字段
我怎样才能解决这个问题
在config/db中使用节点缓存获取db名称是更好的方法吗
谢谢你不行。因此,您可以让config/db返回连接的工厂,而不是连接。旧式的节点回调方式看起来像这样这是概念性的,并不意味着完美: …然后像这样使用它:
var connection = require('../config/db')('Emp1', function(err, connection) {
// Use `err` and `connection` here
});
或者,您可以将创建连接与连接调用分开,让使用连接的模块进行连接。有很多方法可以解决这个问题
更现代的API将使用承诺,以实现其自身的目的,并支持使用async/await:
然后
在上文中,我一直使用ES5语法,如果您使用的是非常旧版本的Node,那么模块可以提供语法承诺,因为您的代码目前似乎避免使用ES2015+功能
最后:我建议更改您的配置选择以使用对象或映射:
然后
甚至可以从文件中加载它们…非常感谢@T.J.Crowder,很有效!现在,存储数据库名称的更好方法是什么?在缓存中?在登录中,用户必须选择数据库,我想在登录控制器中在缓存中设置数据库名称。你觉得怎么样?感谢you@user3242861:我不知道你在这个例子中所说的缓存是什么意思。存储选择的位置将取决于应用程序的总体结构。
var connection = require('../config/db')('Emp1', function(err, connection) {
// Use `err` and `connection` here
});
var mssql = require("mssql");
module.exports = function getConnection(db, callback) {
return new Promise(function(resolve, reject) {
if (db == 'Emp1') {
var config = {
user: "user",
password: "pass",
server: "ip",
database: "Emp1"
}
}
else if (db == 'Emp2') {
var config = {
user: "user",
password: "pass",
server: "ip",
database: "Emp2"
}
}
var connection = new mssql.Connection(config);
connection.connect(function(err) {
if (err) {
reject(err);
} else {
resolve(connection);
}
});
});
};
require('../config/db')('Emp1')
.then(function(connection) {
// Use `connection` here
})
.catch(function(err) {
// Use `err` here
});
var configs = {
Emp1: {
user: "user",
password: "pass",
server: "ip",
database: "Emp1"
},
Emp2: {
user: "user",
password: "pass",
server: "ip",
database: "Emp2"
}
};
var config = configs[db];