express.js对象值在请求之间保持/持久,require()缓存?

时间:2013-06-24 03:01:09

标签: node.js express

我对node / express相当新,但到目前为止还是喜欢它。

现在编写一些应用程序之后我注意到的一件事是,请求对象的属性值有时会在所需模块中的请求之间保持不变;并不一定来自同一个IP甚至是浏览器。

例如,这个超级简单的GET请求:

GET /lookup/?first=ben&last=ipsen

这样处理的事情如下:

app.get('/lookup/', function(req, res){ 
     lookup = require('lookup')
     lookup.find_user(req, res, function(err, user){
        if(err) throw new Error(err) 
        res.send(user) 
     });

 });
显然,这很好用,生活很棒。然而... 如果收到带有空值或缺席值的第二个请求,请说:

 GET /lookup/?first=

app.get('/lookup/', function(req, res){ 
     lookup = require('lookup')
     lookup.find_user(req, res, function(err, user){
        if(err) throw new Error(err) 
        // user.first = ben 
        // user.last = ipsen !?
        res.send(user) 
     });

 });

这是一个由需要缓存引起的问题而不是表达'错误?我是否在请求中加载模块时犯了错误?在很多情况下,我想根据请求加载一个特定的模块,但我可以没有'要求'生活。

我肯定会在这里遇到一些新手问题,但一如既往地欢迎任何指导!

1 个答案:

答案 0 :(得分:2)

require()缓存没有问题。它每次只返回相同的对象,这没有任何问题。

我怀疑问题是你的lookup模块。您可能已全局定义变量或忘记在其前面使用var