我想做以下事情:
var globVar={}
globVar[usr]=["Values"];
function1(usr){
//calculations with globVar[usr]
}
function2(usr){
//calculations with globVar[usr]
}
app.post('/', function(req, res) {
var formString = req.body.filter1;
usr= req.connection.user;
globVar[usr].push(formString);
function1(usr);
function2(usr);
res.redirect('/');
});
usr = req.connection.user来自nodeSSPI模块。我需要根据usr制作这个globVar,以便当用户同时运行此应用程序时,globalVar不会混淆。现在它运行良好但仅适用于单个用户:)
现在,当我启动app时,usr未定义。任何想法如何从应用程序初始化的路线获取它的价值?
感谢您对此事的考虑。
答案 0 :(得分:0)
在应用初始化时,您不知道哪些用户会使用它。
相反,不要做
globalVar[usr] = ["Values"];
在应用程序初始化;改为使用延迟初始化:
app.post('/', function(req, res) {
var formString = req.body.filter1;
usr = req.connection.user;
if (!globVar[usr]) { // This is
globVar[usr] = ["Values"]; // the lazy
} // initialization
globVar[usr].push(formString);
function1(usr);
function2(usr);
res.redirect('/');
});
但请注意,这意味着您的应用会慢慢增加其内存消耗,因为它为用户分配内存,然后如果该用户消失则永远不会回收它。在某个地方,某个时候,您将要删除用户的值:
delete globVar[usr];