SA__
SA__

Reputation: 447

Node ExpressJS Routes issue in routing

I am using express-generator to generate the basic routes.

Here is what i have so far in routes

var express = require('express');
var router = express.Router();
var ctrl = require('../controller/index');
var validation = require("../validations/user");
/* GET home page. */
router.route('/').get(ctrl.index);
router.route('/registerUser').post(validation.registerUser,ctrl.registerUser);

It is working fine.

After i add the below routes

router.route('/loginUser').post(validation.loginUser,ctrl.loginUser);
module.exports = router;

i am getting error like

opt/lampp/htdocs/MedApp/node_modules/express/lib/router/route.js:171
        throw new Error(msg);
        ^

Error: Route.post() requires callback functions but got a [object Undefined]
    at /opt/lampp/htdocs/MedApp/node_modules/express/lib/router/route.js:171:15
    at Array.forEach (native)

How can i allow more routes in the routes.js file ?

Help pls

Upvotes: 0

Views: 94

Answers (2)

Anshuman Singh
Anshuman Singh

Reputation: 1152

it seems you have not exported ctrl.registerUser function in index.js.

Make sure you have something like this

in validation/user.js

exports.registerUser=function(req,res,next){...};

exports.loginUser=function(req,res,next){...};

in controller/index.js

exports.registerUser=function(req,res){...};

exports.loginUser=function(req,res){...};

Upvotes: 1

govgo
govgo

Reputation: 635

The error states that Route.post() requires a callback.

You have:

router.route('/loginUser').post(validation.loginUser,ctrl.loginUser);

Use a callback function like so:

router.post('/loginUser', function(req, res) {
     //run your loginUser logic here
});

module.exports = router; //make this file available to other files

Upvotes: 0

Related Questions