user3742929
user3742929

Reputation: 400

Export actual functions for different routes in different files

Currently my routes file is setup like this:

    const logoutHelper = function (request, response) {
        if (request.session) {
            console.log("User '" + request.session.username + "' logged out.");
            request.session.destroy(function (err) {
                if (err) {
                    return next(err);
                } else {
                    return response.redirect('/');
                }
            });
        }
    }

    // Logout user and delete the session object
    app.get('/logout', logoutHelper);

How can I move the logoutHelper functions to another file in the same directory? I want to split the post and get routes into different files because my original routes.js grew too big.

Upvotes: 0

Views: 44

Answers (1)

Dr_Derp
Dr_Derp

Reputation: 870

In your new file:

const logoutHelper = function (request, response) {
    if (request.session) {
        console.log("User '" + request.session.username + "' logged out.");
        request.session.destroy(function (err) {
            if (err) {
                return next(err);
            } else {
                return response.redirect('/');
            }
        });
    }
}

module.exports = {
    logoutHelper: logoutHelper
};

In your route file:

const Helpers = require('<helper file>');

// Logout user and delete the session object
app.get('/logout', Helpers.logoutHelper);

Something else to note, you are using next but don't have it defined in your callback function. You probably need to add it as the third parameter of the logoutHelper function.

Also I'm assuming you're not using es6-you can probably clean up that export object if you are.

Upvotes: 2

Related Questions