繁体   English   中英

如何在Nodejs中传递数据“控制器”而不是“app.js”

[英]How to pass data "controller" instead of "app.js" in Nodejs

我正在研究 Nodejs(Express.js),我正在将表单数据发送到 controller 但对我不起作用,我收到错误“TypeError: Cannot read property 'name' of undefined in Nodejs”,但主要问题是我的代码是在“app.js”中工作/获取数据,但我想在“userController”中获取数据,因为我想使用 MVC strtucre,这是我的 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;

这是我的 userController.js 文件

userController.save = function (req, res, next) {
    var name = req.body.name;
    console.log(name);   
}

这是我的 app.js,如何在“userController”而不是“app.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 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);
});

我已经重新组织了你的代码。 请确保您的过滤路径声明正确。

    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;

用户控制器.js

const userController_save = function (req, res, next) {
    var name = req.body.name;
    console.log(name);   
}

应用程序.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);
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM