Javascript 使用Express 4将数组从Nodejs中的app.js传递到routes/index.js
如何将对象数组传递给routes中间件,以便根据传递的变量渲染视图 目前,这是我正在使用的布局 app.jsJavascript 使用Express 4将数组从Nodejs中的app.js传递到routes/index.js,javascript,node.js,express,Javascript,Node.js,Express,如何将对象数组传递给routes中间件,以便根据传递的变量渲染视图 目前,这是我正在使用的布局 app.js var index = require('./routes/index'); ARRAY = [objects]; app.use('/', index); routes/index.js var express = require('express'); var router = express.Router(); router.get('/', function(req, re
var index = require('./routes/index');
ARRAY = [objects];
app.use('/', index);
routes/index.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next){
res.render('index', {data: ARRAY});
});
module.exports = router;
翡翠索引
extends layout
block content
each d in data
div!= d.method()
目前,我能提出的唯一可行的解决方案是使用全局变量,但这是不可持续的或不可扩展的。
我试过app.set('shrinkr',shrinkr)和app.locals,但无法使它们中的任何一个与我的应用程序的布局一起工作。根据我对Express4框架的理解,我应该能够在app.js中执行以下操作:
var index = require('./routes/index')(array);
但是我无法获得正确的实现,而且web上也没有关于这方面的信息。有多种方法可以解决这一问题,但是如果您希望将阵列“烘焙”到中间件中(正如代码示例所建议的),您可以这样做:
var express = require('express');
module.exports = function(array) {
var router = express.Router();
return router.get('/', function(req, res, next){
res.render('index', {data: array});
});
}
然后,您可以按照建议使用它:
var index = require('./routes/index')(array);
由于每次调用导出的函数时都会创建新的中间件,因此可以将独立阵列烘焙到不同的中间件中:
var index1 = require('./routes/index')(["array 1"]);
var index2 = require('./routes/index')(["array 2"]);
这可能对您有用,也可能不有用,取决于您的需要。谢谢您的回答-这正是我需要的,但是当我尝试使用
app.use(“/”,index)实现它时,这正是我需要的
我被抛出了一个'路由器。use()需要中间件函数,但得到了一个'+gettype(fn)
--我如何将此实现用于app.use抱歉,我忘记了一个return
语句;它已经更新了,现在应该可以工作了。好的,干杯,这似乎和预期的一样。我现在遇到的问题是,每次调用导出的函数时都会创建新的中间件。如何使用app。使用定义的路由和不断变化的数组?我有一个循环,它每10秒更新一个数组,我希望中间件用它更新,但是在更新数组的同一个循环中重新定义索引,比如loop{array1.push(1);index=require('./routes/index')(array1);}
不起作用(嗨,威廉,它对我有用。我用这个程序试用了一下:好的,谢谢你的帮助Ethan。我写了一个类似的调试应用程序,它工作了,一定是我的应用程序的结构有问题。干杯