我正在编写一个节点应用程序,需要记住createServer()
回调的连接迭代中的数据。有没有一种简单的方法不涉及数据库或文件r / w?我试图在各个模块甚至主脚本中创建对象,同时将它们传递给各种响应处理程序,但是对于每个连接,它们都会被刷新。
我的意思是:
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
不一样持久?
答案 0 :(得分:4)
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”。