Search code examples
node.jsroutesrestify

How to define multiple routes in single array


I have two different versions of my Api v1 and v2.There is two different folder of both version. And i am call all routes file of both versions separately in my routes.js like this:

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

};

I am calling routes.js file in my server.js like this:

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

Now my question is, how could i create an array which contains both v1 and v2. and routes all files in a single loop. please help me guys.


Solution

  • You could do something like this:

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