使用Express 4将数组传递给Nodejs中的app.js中的routes / index.js
我如何传递一个对象的数组到路由中间件,以便我可以渲染视图取决于传递的variables。
目前,这是我正在使用的布局
app.js
var index = require('./routes/index'); ARRAY = [objects]; app.use('/', index);
路线/ index.js
var express = require('express'); var router = express.Router(); router.get('/', function(req, res, next){ res.render('index', {data: ARRAY}); }); module.exports = router;
index.jade
extends layout block content each d in data div!= d.method()
目前唯一可以实现的解决scheme是使用全局variables,但这不是可持续的或可扩展的。 我试过app.set('shrinkr',shrinkr); 和app.locals,但不能得到这两个与我的应用程序的布局。 从我对Express4框架的理解,我应该可以在app.js中做这样的事情:
var index = require('./routes/index')(array);
但我不能得到正确的执行,并没有关于这个在networking上的信息。
有多种方法可以解决这个问题,但是如果您想将数组“烘烤”到中间件中(如您的代码示例所示),可以这样做:
var express = require('express'); module.exports = function(array) { var router = express.Router(); return router.get('/', function(req, res, next){ res.render('index', {data: array}); }); }
那么你可以按照你的build议使用它:
var index = require('./routes/index')(array);
由于每次调用导出的函数时都会创build新的中间件,因此可以将独立arrays烘焙到不同的中间件中:
var index1 = require('./routes/index')(["array 1"]); var index2 = require('./routes/index')(["array 2"]);
根据您的需要,对您而言可能有用或不可用。