Javascript Node.JS全局变量未保持更新状态

Javascript Node.JS全局变量未保持更新状态,javascript,node.js,Javascript,Node.js,我有一个名为_storage的全局对象变量集。看起来是这样的: _storage = { test : { } }; 当用户发送请求将其信息添加到存储器内的测试对象时,应该将_storage.test[1]=true;比如说 设置之后,我这样做是为了查看变量的外观: console.log_storage.test;并输出正确的响应: { '1' : true } 在用户发送请求以获取测试对象中的所有当前项之前,一切看起来都很完美。这就是问题所在。变量本身似乎为空,并返回

我有一个名为_storage的全局对象变量集。看起来是这样的:

_storage = { 
   test : {

   } 
};
当用户发送请求将其信息添加到存储器内的测试对象时,应该将_storage.test[1]=true;比如说

设置之后,我这样做是为了查看变量的外观: console.log_storage.test;并输出正确的响应:

{ '1'  : true }
在用户发送请求以获取测试对象中的所有当前项之前,一切看起来都很完美。这就是问题所在。变量本身似乎为空,并返回到空对象{}

在测试中设置数据后,用户发送请求查看测试内部的内容,因此这不会是因为用户在设置数据之前请求查看数据而导致的问题。这是在两个独立的模块内完成的,一个模块设置数据,另一个模块获取数据。显然,这两个模块不仅仅用于此,而且_存储变量是全局变量,不应受到两个独立模块的影响

下面是一个它是如何下降的例子:

用户发送请求,在_storage.test内设置1=true,使_storage.test[1]=true; _根据console.log,storage.test现在是{test:{1':true}} 用户发送请求以查看来自_storage.test的所有数据 _根据console.log,storage.test是{},好像它没有保持设置 下面是我用来获取、设置和删除数据的代码:

exports.GetUserData = function () {

    return global._storage.test;

};

exports.RemoveUserData = function (uid) {

    delete global._storage.test[Number(uid)];

};

exports.AddUserData = function (uid) {

    global._storage.test[Number(uid)] = true;

};

好的,我认为您没有显示所有的代码,但以下是我所做的工作:

// index.js
'use strict';

global._storage = global._storage || {};
global._storage.test = global._storage.test || {};

exports.GetUserData = function () {
    return global._storage.test;
};

exports.RemoveUserData = function (uid) {
    delete global._storage.test[Number(uid)];
};

exports.AddUserData = function (uid) {
    global._storage.test[Number(uid)] = true;
};


// other.js
'use strict';

global._storage = global._storage || {};
global._storage.test = global._storage.test || {};

exports.GetUserData = function(){
  return global._storage.test;
}
然后我从我的回复中运行了这个:

> var it = require('./');
undefined
> var other = require('./other');
undefined
> it.AddUserData('1234');
undefined
> it.GetUserData();
{ '1234': true }
> other.GetUserData();
{ '1234': true }
>

所以这是设计好的。事情是这样的。。。自2009年以来,我一直在使用node,我从未觉得有必要使用全局变量。我怀疑你的应用程序需要它。所以,即使这对你有用,我建议你想另一种方法

请包含相关代码。您提供的示例代码不是全局变量。它充其量是模块内部的模块作用域。@Paul-不应该将数据添加到模块作用域对象吗?如果是这样的话?这意味着GetUserData将返回由AddUserData编辑的模块范围变量?该代码在我发表评论后已添加。当我拿到笔记本电脑时,我会给出一个完整的答案。谢谢!是的,我知道使用全局变量不是好办法。我尝试了很多不同的方法,这是我最后的办法,看看它是否能奏效。无论如何,我发现我不小心同时调用了AddUserData函数和RemoveUserData函数,这显然是它显示为空的原因。谢谢你花时间来帮助我,我真的很感激。