2012-06-25 152 views
3

我正在編寫一個節點應用程序,需要記住createServer()回調的連接迭代中的數據。有沒有一種簡單的方法,不涉及數據庫或文件r/w?我試圖在各個模塊甚至主腳本中創建對象,同時將它們傳遞給各種響應處理程序,但是對於每個連接它們都會被刷新。nodeJS中的持久變量

我的意思是說什麼:

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的持續不同?

回答

4

Node中的每個模塊都有自己的作用域,所以不,var Foo;不會創建全局變量Foo。從模塊內部使用global對象。

UPDATE:

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); 
} 

而且記錄 「富=酒吧」 預期爲好。

+0

沒有爲我工作。 – TERMtm

+1

你是怎麼測試的?我只是在Node中運行你的代碼,它按預期工作。 –

+0

另外,看我的更新 –