【问题标题】:Passing an Array to Jade/Pug Route in Express在 Express 中将数组传递给 Jade/Pug 路由
【发布时间】:2018-05-02 00:11:04
【问题描述】:

我是新来表达和哈巴狗,所以如果这是一个菜鸟问题,请原谅我,但是我如何将我在一个函数中创建的数组传递给将呈现哈巴狗模板的路线。我最终想遍历数组并将其呈现为表格。

我的代码 - 首先我使用 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 
 })
})

我添加了标题和消息来测试我的哈巴狗模板。 在我的 Pug 模板中,我有

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); } }

请问我做错了什么?

【问题讨论】:

    标签: javascript arrays node.js function express


    【解决方案1】:

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

    在您的示例中,newEventList 被分配给 done/next 回调。因此,您会看到段落中打印了一个函数。

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

    【讨论】:

    • 谢谢,但我没有提到 data.events.map 函数在另一个函数中,所以在实现时我想我也有一个变量范围的问题。因此,在该函数中,我认为我必须返回 newEventsList 数组以使其可用于下面的其他函数,抱歉,我认为我可能需要重新编写问题。我将编辑代码以反映这一点...
    • 这确实回答了我原来的问题,所以会接受它。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-10-28
    • 2020-04-16
    • 1970-01-01
    • 2012-09-01
    • 2023-03-27
    • 1970-01-01
    • 2020-02-06
    相关资源
    最近更新 更多