如何通过Express中的路由传递变量

时间:2016-01-05 09:57:06

标签: javascript node.js express

app.js

var express = require('express');
var app = express();

var testVar = "Hello World";

var index = require('./routes/index');

app.use('/', index);

index.js

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

router.get('/', function(req, res) {
   console.log(testVar);
});

module.exports(router);

如何在./routes/index.js中传递变量“testVar”?有人有想法吗?提前谢谢!

4 个答案:

答案 0 :(得分:1)

你可以在这样的中间件中做到这一点:

var express = require('express');
var app = express();

var testVar = "Hello World";

var myMiddleWare = function (req, res, next) {
    req.testVar = testVar;

    next();
}

var index = require('./routes/index');

app.use('/', myMiddleWare, index);

为索引的每个请求调用中间件。

与普通路由功能的唯一区别是第三个参数“next”,可能会被调用以进入下一步(索引),或者不被调用(如果发生错误或其他事情)

您可以在此处详细了解中间件:http://expressjs.com/en/guide/using-middleware.html

答案 1 :(得分:1)

您可以在app.js

中执行此操作
app.use(function (req, res, next) {
    req.testVar = testVar;
    next();
});

然后在index.js中获取您之前设置的req变量:

router.get('/', function(req, res) {
   console.log(req.testVar);
});

答案 2 :(得分:0)

您可以传递如下所示的变量


   app.get('/user/:testVar', function (req,res,next) {
    });

然后使用

req.params.testVar

检索参数

答案 3 :(得分:0)

我不知道你这样做的目的。但这就是如何在没有中间件的情况下将数据发送到./routes/index.js并获得路由器。

index.js

var express = require('express');
var router = express.Router();
var testVar = null;

router.get('/', function(req, res) {
   console.log(testVar);
});

module.exports = function(testData){
    testVar = testData;
    return router;
}

app.js

var testVar = "Hello World";
var index = require('./routes/index')(testVar);