Node.js 在 Jade 中渲染变量

Node.js rendering variables in Jade

我想查看我视图中的所有 URL,但出现 #{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}

这对我有用 -

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>

我是这样解决的

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}