在Express中将数组传递给Jade / Pug路由

我是新来expression和帕格所以原谅我,如果这是一个noob的问题,但如何将我创build的数组在一个函数的路线,将呈现帕格模板。 我最终想循环数组,并将其呈现为一个表格。

我的代码 – 首先我使用lodash map方法从一个文件接收的数据中创build数组。 *编辑 – 添加完整的代码结构 –

fs.readFile(file, 'utf8', function (err, data) { if (err) { console.log('Error: ' + err); return; } var data = JSON.parse(data); var newEventList = data.events.map(events => ({ id: events.id , name: events.name , venue: events.place.name , address: events.place.location.street + " " + events.place.location.city + " " + events.place.location.zip , coverPicture: events.coverPicture , description: events.description , startTime: events.startTime , endTime: events.endTime })); }); 

所以现在我有一个名为newEventList的对象数组。

我的路线是哈巴狗

 app.get('/', function (req, res, newEventList) { res.render('index', { title: 'Hey', message: 'Hello there!', newEventList }) }) 

我添加了标题和消息来testing我的哈巴狗模板。 在我的帕格模板中

 h1= message p= newEventList 

但在呈现的段落,我得到一个长的错误信息 –

 function next(err) { // signal to exit route if (err && err === 'route') { return done(); } // signal to exit router if (err && err === 'router') { return done(err) } var layer = stack[idx++]; if (!layer) { return done(err); } if (layer.method && layer.method !== method) { return next(err); } if (err) { layer.handle_error(err, req, res, next); } else { layer.handle_request(req, res, next); } } 

请问我做错了什么?

从路由定义的callback中删除或重命名newEventList作为第三个参数。

在你的例子中, newEventList被分配到done/nextcallback。 因此,您可以在段落中看到正在打印的function。

 var newEventList = // Whatever value; app.get('/', function (req, res) { res.render('index', { title: 'Hey', message: 'Hello there!', newEventList }) })