簡體   English   中英

在Express中將數組傳遞給Jade / Pug路線

[英]Passing an Array to Jade/Pug Route in Express

我是新來表達和哈巴狗的人,所以如果這是一個菜鳥問題,請原諒我,但是我如何將在一個函數中創建的數組傳遞給將呈現哈巴狗模板的路由。 我最終想遍歷數組並將其呈現為表。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM