希望在 get 和 post 之后做一些统一的清理动作,目前我是在每一个post 或 get callback中的退出点去调用一次清理函数, 这样代码很多也不易维护,能不能在这些post 或者 get之后注册一个统一的函数呢? 现在的代码如下,其中有很多的 clearup的函数调用:
login: function(req, res) {
var email = req.body.email;
var password = req.body.password;
if ( !(email && password) ) {
res.send(lib.genAjaxRet(10001, lib.s('INVALID_EMAIL')));
clearup();
return;
}
password = encodePassword(password);
validUser(email, password).then(function(id){
req.session.uid = id;
res.send(lib.genAjaxRet(0));
clearup();
}, function() {
var msg = lib.s('LOGIN_FAILED');
res.send(lib.genAjaxRet(10003, msg));
clearup();
});
},
如果每次都需要调用的话,就放在router的后面那个中间件里面吧
@alsotang router.get 或者 router.post 都是最后一个层吧, router.use添加的中间件都是在调用get or post之前调用的。
@louis-sherren 好像也是。你看看 express 的 response-time 的实现,或许可以 hack 一下这个地方。
@louis-sherren 就是 hack 一下 res.send 之前的某个事件,让它能自动调用 clear
@alsotang 嗯 谢谢
@alsotang 可以用on-finished模块
route.all
@i5ting 这个不是吧
@louis-sherren 哦,看错了,我以为路由同时支持get和post呢
你这个情况可以抽象一个actions文件来专门处理
我感觉就用on-finished就不错的
我只想说koa.js欢迎你
@luicfer 哈哈赞!不过已经用上express了,看了下貌似Cnode也用的express,这样有一个成熟的站可以学(chao),还是不错啊