nodejs中有拦截器吗?
 发布于 11 年前  作者 cyy0418  8962 次预览  最后一次回复是 11 年前  来自  

nodejs中有没有类似JAVA的拦截器功能,我想实现数据增删改查都先经过这个过滤器。

想对用户对数据的操作记录,都记录到数据库里,不知道怎么实现?

12 回复
tulayang

compose (filter(data))

写个filter函数还需要用到库吗

youxiachai

express 的中间件机制就是…这个

cyy0418

我需要获取操作前的数据,和操作后的数据,该怎么做呢?

xiuxu123

如果你使用express,中间件就是“拦截器”

xiaobaicai

同求 我也很想知道 类似ASP.NET MVC的过滤器

tulayang

@cyy0418 function filter (data) { // 操作data代码 return 过滤后的data; }

或者filter(data, compose)异步运行

function filter (data, f) {
    // 操作data
    f.call(null,   过滤后的data);
} 
JacksonTian

中间件就是拦截器

cyy0418

@tulayang 我想达到的效果是

比如用户操作来数据data,为我想对它这个操作加个过滤器,这个过滤器可以获取用户操作前的数据,和修改后的数据。 类似与监听事件了

tulayang

@cyy0418 这个很简单,只需要2个变量记录操作前的数据和操作后的数据,不需要依赖封装。

操作数据的函数可以定义为: compose(dataA), 返回dataA, dataB.

function compose (dataA) {
  // 过滤dataA
  // 得到dataB
  return { dataA: dataA, dataB: dataB };
}

或者也可以定义多态过滤的版本

function  compose (dataA, f) {  // f为多态过滤函数
  // f(dataA), 过滤dataA;
  // 得到dataB
  return { dataA: dataA, dataB: dataB };
}
solqkwgkwg

ex 的中间件,切入点是HTTP 请求接收里,如果我在业务处理中如何使用? 中间件看功能实现是多个拦截一个,有处理排序问题 一般拦截是一对一的 有兴趣看看我写的AOP