簡體   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