繁体   English   中英

使用参数的nodejs express.router

[英]nodejs express.router with parameters

问题

我正在使用带有express模块​​的nodejs应用程序。 为了具有结构,我将路由分成了一个extern route.js。 我想在req和res参数旁边给这个route.js提供一些其他需要的参数。 但是我不知道该怎么办。

Index.js

const app = express();
        app.use(session({
        secret: uuidv4(),
        resave: true,
        saveUninitialized: true
    }));
    app.use(helmet());
    app.use(cors());
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({
        extended: true
    }));
    app.use('/', express.static(path.join(__dirname, '/site/static')));
    app.use('/', routes);

routes.js

module.exports = (function() {
        'use strict';
        let router = require('express').Router();
        router.get('/', (req, res) => {
            if(!req.session || req.session.key !== loginkey) {
                res.redirect('/login');
            } else {
                res.redirect('dashboard');
            };
        });
        router.get('/dashboard', (req, res) => {
            if(req.session && req.session.key === loginkey) {
                helper.render(req, res, "sites/dashboard");
            } else {
                res.redirect('/');
            };
        });
        router.get('/login', (req, res) => {
            log.LogLine(3, "GET /login");
            helper.render(req, res, "sites/login");
        });

        router.get('/logout', (req, res, next) => {
            log.LogLine(3, "GET /logout");
            if (req.session) {
                req.session.destroy(function(err) {
                    if(err) {
                        return next(err);
                    } else {
                        return res.redirect('/');
                    };
                });
            };
        });
        return router;
    })();

如果要将某物从index.js传递到route.js中的路由,则可以执行以下操作。

route.js中 ,您可以接受一些参数:

module.exports = function(arg1, arg2) {

  let router = require('express').Router();

  router.get('/', (req, res) => {

    // You can now use arg1 and arg2 here

  });

  // ...

  return router;

};

请注意,您需要删除IIFE才能阻止立即调用该函数。

然后在index.js中 ,您可以调用该函数并传递您想要的任何东西:

app.use('/', routes('something', 'something else'));

我希望这有帮助。

暂无
暂无

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

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