2014-12-27 104 views
0

想知道在以下情況下共享變量的「良好」方式。跨多個文件共享變量

server.js文件包括authenticator.js文件,像這樣:

var authenticator = require('./server/services/authenticator')(app); 
app.use(authenticator); 

authenticator.js文件有一個叫做專用密鑰變量:

module.exports = function (app) { 
    var authenticator = function (req, res, next) { 
    //do some stuff here 

    var privateKey = 'value from Basic Auth header' 

    }; 
    return authenticator; 
}; 

api.js文件現在需要這個privateKey變量。

我包括我的server.jsapi.js文件以同樣的方式:

var api = require('./server/api')(app); 
app.use('/v1', api); 

,我想通過privateKey也使用類似的:

var api = require('./server/api')(app, privateKey); 

問題:哪有我在我的server.js文件中提供privateKey,以便我可以將它傳遞給api.js文件?

回答

0

你可以將其連接到REQ變量

module.exports = function(app) { 
    var authenticator = function(req, res, next) { 
     //do some stuff here 
     req.privateKey = 'value from Basic Auth header'; //This can be shared accross middlewares. 
     next(); //don't forget to call this. 
    }; 
    return authenticator; 
}; 

server.js


var api = require('./server/api')(app); 
app.use('/v1', api); 

api.js


module.exports = function(api) { 
    var api = function(req, res, next) { 
     var privateKey = req.privateKey; //this is how we can use it 
     //do something with it 
     next(); 
    }; 
    return api; 
}; 

}

+0

這是我決定實際執行的方式。 – tommyd456 2014-12-28 10:26:05

+0

這絕對有效。但我的總體目標是,如果每次請求都會設置一些內容,那麼我會將其設置爲「req」,否則我會將其設置爲出口的一部分。 – deitch 2014-12-29 06:05:30