【问题标题】:How to define multiple routes in single array如何在单个数组中定义多个路由
【发布时间】:2017-11-02 02:48:45
【问题描述】:

我有两个不同版本的 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 的数组。并在一个循环中路由所有文件。请帮帮我。

【问题讨论】:

    标签: node.js routes restify


    【解决方案1】:

    你可以这样做:

    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);
            });
        });
    };
    

    【讨论】:

    • 它将通过错误老兄。错误:实际上,当我进行一些更改时,找不到模块'./v$({version})/routes/$({route})',它会通过 $ 未定义。现在做什么?并感谢您的回答。 @以斯拉
    • 我猜您正在运行没有template literals 的旧版本节点。我已经编辑了答案以反映这一点。除了动态安装路由之外,我不确定您要完成什么。
    • 老兄,请您再次检查我的问题。我改变了它。其实这是我的错。 version2 有一条新路线。你的答案是为它工作,但它只需要 1 从版本数组。我怎么能从数组中跳过 index[0]?请帮我。实际上我尝试过,但它不起作用。
    • 谢谢哥们。它会起作用的。如果我有任何疑问,请务必与您联系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2018-07-03
    • 2016-09-10
    • 2017-12-30
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多