2017-06-01 46 views
0

我有两个不同版本的Api v1和v2.两个版本都有两个不同的文件夹。而我单独叫两个版本的所有路由文件在我routes.js这样的:如何在单个阵列中定义多个路由

module.exports = function (server) { 
    const v1Path = "v1"; 
    const v2Path = "v2"; 
//v1 files 
    require("./"+v1Path+"/routes/a")(server); 
    require("./"+v1Path+"/routes/b")(server); 
    require("./"+v1Path+"/routes/c")(server); 
//v2 files 
    require("./"+v2Path+"/routes/a")(server); 
    require("./"+v2Path+"/routes/b")(server); 
    require("./"+v2Path+"/routes/c")(server); 
    require("./"+v2Path+"/routes/d")(server); 

}; 

我打电话我server.js routes.js文件是这样的:

var routes = require('./routes')(server); 

现在我的问题是,我如何创建一个包含v1和v2的数组。并在一个循环中路由所有文件。请帮助我们。

回答

0

你可以做这样的事情:

module.exports = function (server) { 
    const versions = { 
     'v1': ['a', 'b', 'c'], 
     'v2': ['a', 'b', 'c', 'd'] 
    }; 

    Object.keys(versions).forEach(function(version){ 
     versions[version].forEach(function(route){ 
      require('./' + version + '/routes/' + route)(server); 
     }); 
    }); 
}; 
+0

它将通过错误的家伙。 错误:找不到模块'./v$({version})/routes/$({route})' 实际上,当我做一些更改时,它将通过该$未定义。现在做什么?并感谢您的回答。 @Ezra –

+0

我猜你没有[template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)正在运行较旧版本的节点。我已经编辑了答案来反映这一点。我不确定你试图完成什么,而不是动态地安装路线。 –

+1

感谢buddy为我工作。 –