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

时间:2017-11-18 07:47:25

标签: javascript arrays node.js function express

如果这是一个noob问题,我是新来表达和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); } }

我做错了什么?

1 个答案:

答案 0 :(得分:2)

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

在您的示例中,newEventList已分配给done/next回调。因此,您会在段落中看到正在打印的功能。

var newEventList = // Whatever value;

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