我对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)
});
});
这是一个由需要缓存引起的问题而不是表达'错误?我是否在请求中加载模块时犯了错误?在很多情况下,我想根据请求加载一个特定的模块,但我可以没有'要求'生活。
我肯定会在这里遇到一些新手问题,但一如既往地欢迎任何指导!
答案 0 :(得分:2)
require()
缓存没有问题。它每次只返回相同的对象,这没有任何问题。
我怀疑问题是你的lookup
模块。您可能已全局定义变量或忘记在其前面使用var
。