ExpressJs在为每个路由发送响应后执行回调
ExpressJs execute a callback after sending a response for every route
该场景是将数据保存在缓存中。我们有许多用复杂逻辑编写的快递路线。
我必须找到一种方法来保存缓存中的响应数据。我不能去每一个路由,并检查这是否需要保存,并在发送响应之前保存数据。(如果没有其他方法,那么这可能是方法)
我试过以下方法。
- https://nodejs.org/api/http.html#http_event_close_1 -使用'close'或'finish',在发送响应后触发。但是我无法获得这些事件中的响应数据。
- 我的节点版本是v0.10.31
- 想到使用app.all('*',回调),但我不确定如何捕获缓存的响应数据。
- 最后我想到添加第二个回调路由,app。动词(路径,回调……], callback),但是在第一个回调中返回响应后,第二个回调永远不会被调用。
希望有一个解决方案,我被困在这个超过一个星期。
将逻辑添加到每条路由中是一项乏味的工作的原因是,我需要添加一个配置项,指定哪条路由需要用过期时间缓存。
响应需要缓存在redis server中。将根据路由数据和查询字符串生成缓存键。所有这些完整的用户特定信息将被保存在一个密钥中。
所以当用户点击相同的路由时,键将被生成来检查它是否已经存在,使用app。使用,数据将在不先于后续中间件的情况下提供。
定义一个回调中间件为,
var storeResponseMiddleware = function(req, res, next) {
console.log("storing data in redis....")
..........more stuff
}
添加到expressJs的应用中,
app.use(logicRoute)
app.use(storeResponseMiddleware)
现在,对于所有响应,将调用storeResponseMiddleware
。你必须在路由处理程序中调用next()
。
相关文章:
- 如何执行ajax响应返回的javascript函数
- 引导:响应式设计-当窗口大小从980px调整到979px时执行JS
- 在AJAX成功响应中执行Javascript代码(在单独的文件中)
- Rails 4中不执行Ajax响应
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- $http.post() angularjs 响应函数未按正确的顺序执行
- 如何在使用jQuery$.when执行多个请求时将响应分配给请求
- PHP延迟ajax响应的执行
- 从PHP执行一个javascript函数并返回响应
- jQuery 如何导致执行在 AJAX 响应中返回的脚本标记中找到的 JS 代码
- 如何从 Ajax 响应中执行主窗口中定义的 Javascript 函数
- 在 Rails 中,我可以在 JS 响应后在控制器操作中执行 ActionMailer 逻辑吗?
- for 循环元素的执行时间比内部 AJAX 调用可以响应的要快
- Phantomjs 检查响应标头,然后执行某些操作
- 在 onecheckot 上执行每个步骤后下订单时没有响应,我将 magento 从 1.6.1.0 升级到 1.8
- JavaScript 在页面收到 AJAX 响应后不再执行
- 如何捕获页面上的所有请求和响应,并根据每个响应状态的需要执行操作
- Ajax 响应未执行 (javascript)
- 在通过 AJAX 响应发送的页面上执行 javascript 函数
- 从具有HTML + JS的AJAX响应执行JS函数