设置全局/局部变量

问题描述:

我刚刚开始使用Node,并且遇到了设置变量的问题。在下面的例子中,每个用户的random值都是一样的,因为它是在app start上设置的。设置全局/局部变量

var random = math.Random(); 

app.post('/api/whatever/', function(req, res) { 
    console.log(random); 
}); 

使用局部变量将意味着,每一个岗位请求时的时间随机变化的值:

app.post('/api/whatever/', function(req, res) { 
    var random = math.Random(); 
    console.log(random); 
}); 

我试图找出是如何设置的随机值每个用户/会话一次(即用户第一次打电话给/ api /不管)。我有第一个请求后设置的其他配置变量,所以最好只是触发一个init()函数。但问题是相同的。

您的全局变量可以包含一个对象,其中的键是会话ID,值是您想要的会话特定信息 - 例如您的随机数。

获取会话ID,看到了这个问题:How can I find the session Id when using express/connect and a session store?

+0

你指的是使用express-会议?我昨天尝试过,但似乎所有请求都有相同的ID,因为app.use(session(sess))在我的API方法之外(我假设它是在我使用'node app.js'启动应用程序时设置的,而不是用户发出请求)我只是用邮差进行测试,但是当我打开两个选项卡时,会话ID是相同的。 – krazy4code

使用express-session模块:

npm install express-session

下面是一个例子:

... 

var session = require('express-session'); 

app.use(session({secret: '1234567890QWERTY'})); 

app.get('/api/whatever/', function(req, res) { 

    if(req.session.random) { 
    res.send('Your random key is: ' + req.session.random); 

    } else { 
    req.session.random = Math.random(); 
    // Set anything else you want in req.session ... 
    } 

}); 
+0

我今天测试了一段时间。不管我的方法如何,这个问题似乎都是一样的。全局变量不起作用,因为所有用户都具有相同的值。本地变量不起作用,因为每次他们发出新的通知后,值都会更新。即使Express-Session也会生成一个新的ID。 – krazy4code

+0

我不明白。快速会话基于每个用户特定的cookie。每个用户都有自己的会话对象,您可以在其中设置特定的用户属性。它不再是全局或局部变量。你能用你测试过的代码更新你的问题吗?通过迄今为止尝试过的方法更新问题非常有用。 – karliwson

+0

我的错误。你的例子完美地工作。我不明白的唯一部分是我如何从一个超出上述get方法范围的函数获取和设置会话cookie值。例如,如果我在app.get中调用函数foo(someparam){},并尝试从该函数内访问会话cookie。 – krazy4code