CNode

node新人求问express

问答
SShiLiuShu发布于10 年前最后回复10 年前3 回复3838 浏览0 收藏

楼主node新人,刚开始接触使用的express框架。 碰到以下代码部分有些疑惑:

Issue.find({username:username},function(err,docs){ if(err){ next(err); }else{ req.issues=docs; next();

}

});

req.issues=docs;这句是将issue的查询结果存在req.issues中,那么请问在req这个对象中,issues属性是一直保存的么,还是下一次请求就清空了?就比如说, 在别的路由中能用接着使用req.issues.name查询或者做其他操作么? 谢谢。

查看回复

回复 (3)

K
Kaijun#1·10 年前

如果你知道Express或者Node各种框架的原理的话, 这个问题就很简单了.

Express中, 请求来了后, 请求会一层一层传遍所有的中间件, 直到中间件遍历完或者返回Response或者错误处理.

还是下一次请求就清空了?

这个问得有点不着边际, 如果问的是:下一个中间件里是否还保留着req.issues. 答案是是的. 你确实可以在设置req.issues这个中间件之后的所有中间件中取得req.issues,

别的路由中能用接着使用req.issues.name查询或者做其他操作么

但是如果是下一个请求的话, 每个请求是独立的互不影响的. 所以下一个请求 匹配到不同的router里, 没有相关查询和设置req的话 是取不到req.issues的

K
Kaijun#2·10 年前

当然如果你想把数据一直保存在内存中不用每次都读取数据库的话, 就要考虑新的数据可持续方案比如redis

参与回复
登录后即可参与回复。登录