Estoy trabajando en Nodejs (Express.js), estoy enviando datos de formulario al controlador pero no funcionan para mí, recibo el error "Error de tipo: no se puede leer la propiedad 'nombre' de indefinido en Nodejs", pero el problema principal es mi código es trabajando/obteniendo datos en "app.js" pero quiero obtener datos en "userController" porque quiero usar MVC strtucre, aquí está mi root.js
var express=require('express'); var router= express.Router(); var controllers= require('../controllers'); router.get('/', controllers.homeController.index); router.get('/signup', controllers.userController.signup); router.post('/signup', controllers.userController.save); router.get('/login', controllers.userController.login); router.get('/dash', controllers.userController.dash); module.exports = router;Aquí está mi archivo userController.js
userController.save = function (req, res, next) { var name = req.body.name; console.log(name); }Aquí está mi app.js, ¿Cómo puedo obtener datos en "userController" en lugar de "app.js", Gracias de antemano.
const express = require('express'); const mysql = require('mysql'); const expressValidator = require('express-validator'); const bodyParser = require('body-parser'); const cookieParser = require('cookie-parser'); const session = require('express-session'); const flash = require('connect-flash'); const app = express(); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use('/', routes); app.set('view engine', 'pug'); app.set('views', path.join(__dirname, 'views')); app.use(express.static(__dirname + '/public')); app.use(cookieParser('keyboard cat')); const PORT = 4000 app.listen(PORT, function (err) { if (err) console.log(err); console.log("App started on PORT", PORT); });He reorganizado sus códigos. Asegúrese de que la declaración de la ruta de su filtro sea correcta.
var express=require('express'); var router = express.Router(); var controllers= require('../controllers/userController'); // if userController.js in controller folder. router.get('/', controllers.homeController_index); router.get('/signup', controllers.userController_signup); router.post('/signup', controllers.userController_save); router.get('/login', controllers.userController_login); router.get('/dash', controllers.userController_dash); module.exports = router;controlador de usuario.js
const userController_save = function (req, res, next) { var name = req.body.name; console.log(name); }aplicación.js
const express = require('express'); const mysql = require('mysql'); const expressValidator = require('express-validator'); const bodyParser = require('body-parser'); const cookieParser = require('cookie-parser'); const session = require('express-session'); const flash = require('connect-flash'); const path = require("path"); const app = express(); const routes = require('./routes/root'); // If your root.js inside a routes folder app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.set('view engine', 'pug'); app.set('views', path.join(__dirname, 'views')); app.use(express.static(__dirname + '/public')); app.use(cookieParser('keyboard cat')); app.use('/', routes); const PORT = 4000 app.listen(PORT, function (err) { if (err) console.log(err); console.log("App started on PORT", PORT); });