我是 express 和 pug 的新手,所以请原谅我,如果这是一个新手问题,但我如何将我在一个函数中创建的数组传递给将呈现 pug 模板的路由。我最终想遍历数组并将其呈现为表格。
我的代码 - 首先,我使用 lodash map 方法根据从文件接收的数据创建数组。 *编辑-添加了完整的代码结构-
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
})
})
我添加了标题和消息来测试我的哈巴狗模板。 在我的哈巴狗模板中
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); } }
请问我做错了什么?
最佳答案
从您的路由定义的回调中,删除或重命名 newEventList
作为您的第三个参数。
在您的示例中,newEventList
被分配给 done/next
回调。因此,您会看到段落中打印了一个函数。
var newEventList = // Whatever value;
app.get('/', function (req, res) {
res.render('index', { title: 'Hey', message: 'Hello there!',
newEventList
})
})
关于javascript - 在 Express 中将数组传递给 Jade/Pug 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47363815/