node.js中的全局变量是服务器范围内的,还是仅适用于该会话或用户

时间:2014-05-23 13:02:41

标签: javascript node.js express

我有一个非常基本的问题并且如果它是哑的则道歉 - 是服务器范围内的node.js中的全局变量还是仅适用于该会话或用户?例如,我正在考虑在routes.js文件下创建一个全局布尔变量来存储是否已经验证了twitter凭证,如果有,则不应该重新验证。

但是,我想知道是为每个会话/用户创建变量还是为整个服务器创建一次变量(即如果一个人验证,将verifiedCredentials设置为true,则变量为真所有其他用户?)。

routes.js (Server side):
'use strict';

var verifiedCredentials = false;

/**
 * Application routes
 */
module.exports = function(app) {

  // Server API Routes
  app.get('/api/awesomeThings', function(req, res) {
    if (!verifiedCredentials) {
      //do some verification
      verifiedCredentials = true;
    }
  });
}

1 个答案:

答案 0 :(得分:3)

测试它并不是那么难。

但是你没有,结果如下:全局变量真的是全局变量,节点核心没有会话/用户上下文。

实际上节点实际上不是一个http服务器程序,它是一个基于事件的引擎,你可以在其上运行很多东西,而且它经常被用来运行基于http的应用程序(但它可以用于那些有的应用程序)甚至不是会话或用户的概念。)

如果您确实需要将变量附加到会话,那么,当您使用express时,只需要它来管理会话并将变量存储为

req.session.verifiedCredentials = false;

请注意,如果您正在尝试管理身份验证,因为您的变量名称可以考虑,您可能会对已经过测试过的模块感兴趣,例如passport