2016-10-04 4 views
0

Я использую экспресс-генератор для генерации основных маршрутов.Узел Выпуск маршрутов ExpressJS в маршрутизации

Вот что я до сих пор в маршрутах

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

Это работает отлично.

После того, как я добавить следующие маршруты

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

я получаю сообщение об ошибке, как

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) 

Как я могу позволить большему количеству маршрутов в routes.js файл?

Помощь пожалуйста

ответ

1

вы, кажется, не экспортировали функцию ctrl.registerUser в index.js.

Убедитесь, что у вас есть что-то вроде этого

в проверке/user.js

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

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

в контроллере/index.js

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

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

Спасибо, но внутри функции .. как я могу иметь логику для вызова контроллера .. т.е. ' validation.registerUser, ctrl.registerUser'? –

+0

, о котором вы говорите? –

+0

Мне нужно вызвать 'ctrl.registerUser', как только я нажму на registerUser –

0

Ошибка заявляет, что Route.post() requires a callback.

Вы:

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

Используйте функцию обратного вызова, как так:

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

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

Это работает, но как я могу использовать 'validation.registerUser, ctrl.registerUser'? –

+0

Я не уверен, что понимаю, что вы просите. Вы можете уточнить? Этот код выглядит не совсем правильно. Вы можете запустить эти функции 'validation.registerUser'' ctrl.registerUser' внутри функции обратного вызова. – vincentjp

+0

Таким образом, 'router.route ('/ loginUser'). Post (validation.loginUser, ctrl.loginUser);' i могу вызвать функцию loginUser внутри контроллера, который вызывается. Но так, как вы заявили. Как я могу это сделать ? –