4

我正在编写一个节点应用程序,它需要在createServer()回调的连接迭代中记住数据。有没有不涉及数据库或文件读/写的简单方法?到目前为止,我已经尝试在各个模块甚至主脚本中创建对象,同时将它们传递给各种响应处理程序,但是对于每个连接,它们都会被刷新。

我的意思是:

require('http').createServer(function(req,res){
        route(req,res,object);
}).listen(cp=80);

object={variable:0}

function route(req,res,object){
    res.end();
    console.log(object.variable);
    object.variable=Math.floor(Math.random()*100);
}

console.log不出所料,在这种情况下会抛出0每个连接。有没有办法创建全局变量,不是跨模块可用,而是持久性不像var's?

4

1 回答 1

5

Node 中的每个模块都有自己的作用域,所以不,var Foo;不会创建全局变量 Foo。使用global模块内部的对象。

更新:

require('http').createServer(function(req,res){
        route(req,res,object);
}).listen(cp=8080);

object={variable:0}
global.foo = 'Bar'; // I added this

function route(req,res,object){
    res.end();
    console.log(object.variable);
    console.log("foo = %s", global.foo); // I added this too
    object.variable=Math.floor(Math.random()*100);
}

它也按预期记录“foo = Bar”。

于 2012-06-26T00:01:08.533 回答