Node.js在Jade中渲染变量

时间:2015-11-18 03:52:52

标签: node.js express pug

我想在我的视图中查看所有网址,但我收到#{data.id} Cannot read property 'id' of undefined错误。

我想创建一个循环并查看我拥有的所有视频。

app.js

app.get('/you', function(req,res) {
    youtube.where('id', '<', '5689').fetchAll().then(function(data) {
        res.render('youtube', {
            mi : data
        });
    });
});

以下是给定ID的示例输出(我将res.render更改为res.send以测试我的查询,因此它可以正常工作)

[
    {
        "id": 442,
        "channel_name": "channelNameredacted",
        "video_url": "videoURlRedacted",
        "video_title": "redacted",
        "status": 1,
        "date": "redacted"
    }
]

youtube.jade

假设我想输出视频ID。

html
  head
  body
    each data in mi
      #{data.id}

2 个答案:

答案 0 :(得分:1)

这对我有用 -

var jade = require('jade'),
  fs = require('fs');

var data = {
  mi: [
    {
      "id": 442,
      "channel_name": "channelNameredacted",
      "video_url": "videoURlRedacted",
      "video_title": "redacted",
      "status": 1,
      "date": "redacted"
    }
  ]
};

fs.readFile('youtube.jade', 'utf-8', function(error, source){
  var html = jade.render(source, data);
  console.log(html)
});

youtube.jade

html
  head
  body
    ul
      each data in mi
        li= data.id

输出

<html><head></head><body><ul><li>442</li></ul></body></html>

答案 1 :(得分:0)

我这样解决了。

app.get('/ind', function(req,res) {
    youtube.where('id', '<', '100').fetchAll().then(function(data) {
        data = data.toJSON();
        res.render('youtube', {
            mi : data
        });
    });
});

youtube.jade

html
  head
  body
    ul
      for m in mi
        li #{m.id}