使用回调

时间:2016-01-20 02:55:35

标签: node.js express

我正在使用快递。我正在动态添加路由(路由配置存储在mongodb中)

const app = require('express')();
const mongoose = require('mongoose');

var proxyHandler = { 

    paths: [ '/demoservice' ],
    proxy: true,
    baseUrl: 'http://test/demo',
    name: 'demoservice',
    _id: ""
}

app.use(proxyHandler.paths,function(req,res){

        // do stuff
});

如果我想进行mongodb调用并拉出路由配置,然后执行app.use

这是获取路由列表的函数,但这是异步的,如果我循环结果并尝试为每条路径执行app.use()

function getAllActiveRoutes(cb){

    routes.find({active:true},function(err,result){
        if(err){
            return cb(err)
        } else {
            return cb(null,result)
            ** this is not working
            result.forEach(function(r){
             app.use(r.paths,function(req,res){
                   res.render(something)
            })})
        }
    })
}

1 个答案:

答案 0 :(得分:0)

试试这个

routes.find({active:true},function(err,result){
    if(err){
        return cb(err)
    } else {
        return cb(null, function() {
            result.forEach(function(r){
               app.use(r.paths,function(req,res){
                  res.render(something);
               });
            });
       });
    }
})