中间件

时间:2018-04-13 15:52:32

标签: express

有一些代码如下:

function middle(req,res,next){
    //block A
    next();
    //block B
}

app.get('/',middle,function(req,res){
    DB.query('....',callback(){
        //block C
    })
})

我运行了代码,执行的块顺序是A->B->C,我期望的是A->C->B。我认为DB存在异步调用。并且路由器返回middle没等待数据库查询完成。我该如何解决这个问题呢?

有关于我的中间件的详细信息:

function _AliceSPA3HttpParserPayload(){
    this.data = null;
    this.errCode = 'UNHANDLED';
    this.error = null;
    this.api = function(errCode,error,data){
        this.errCode = errCode;
        this.error = error;
        this.data = data;
    }
    this.apiSuccess = function(data){
        this.api('E0',null,data)
    }
    this.apiSuc = this.apiSuccess;
}

module.exports = function(req,res,next){
    var AP = new _AliceSPA3HttpParserPayload();
    res.AP = AP;
    next();
    if(AP.errCode === 'UNHANDLED'){
        return;
    }

    var error = res.app.get('error');
    var err = error[AP.errCode];
    if(!err){
        err = error['E-1'];
        err.code = AP.errCode;
        err.error = AP.error;
    }
    err.data = AP.data;

    res.json(err);
}

1 个答案:

答案 0 :(得分:0)

它似乎可以在koa.js中使用承诺中间件来解决。