如何在 app.get 或者 app.post 之后做统一的函数调用
发布于 10 年前 作者 louis-sherren 6557 次浏览 最后一次编辑是 8 年前 来自 问答

希望在 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();
            }); 
        },  

12 回复

如果每次都需要调用的话,就放在router的后面那个中间件里面吧

@alsotang router.get 或者 router.post 都是最后一个层吧, router.use添加的中间件都是在调用get or post之前调用的。

@louis-sherren 好像也是。你看看 express 的 response-time 的实现,或许可以 hack 一下这个地方。

@louis-sherren 就是 hack 一下 res.send 之前的某个事件,让它能自动调用 clear

@alsotang 可以用on-finished模块

@i5ting 这个不是吧

@louis-sherren 哦,看错了,我以为路由同时支持get和post呢

你这个情况可以抽象一个actions文件来专门处理

我感觉就用on-finished就不错的

我只想说koa.js欢迎你

@luicfer 哈哈赞!不过已经用上express了,看了下貌似Cnode也用的express,这样有一个成熟的站可以学(chao),还是不错啊

回到顶部