【问题标题】:Display data in Jade with Mongoose使用 Mongoose 在 Jade 中显示数据
【发布时间】:2016-01-23 12:34:31
【问题描述】:

我一直在尝试获取存储在 mongodb 中的数据并使用简单的 Jade 模板显示它。我对此有点陌生,此时我完全迷失了。

这是我在 /yfirlit 上渲染收藏时的输出

/yfirlit 的快速路由器如下所示

apiRouter.get('/yfirlit', function(req, res){
  apiUser.find(function(err, users) {
     if(err) res.send(err);
       res.render('yfirlit', {title: 'Yfirlit', users: users});
    });
});

我的简单翡翠模板

html
  head
   title!= title
  body
    div #{users}
    p
     | API

当我运行测试时,整个 mongodb 集合都会显示在网站上。我正在寻找的是能够仅显示集合中的一部分文档。例如:我尝试在 Jade 模板中仅显示 name 属性,但无法正确显示。

html
  head
   title!= title
  body
    div #{users.name}
    p
     | API

任何帮助将不胜感激,我很迷茫,我希望能够只渲染我想要的属性,而不是像图片中的整个东西。

干杯!

【问题讨论】:

  • 我的代码格式有点不对劲。我正在尝试修复它,但我遇到了一些问题。道歉。
  • 您需要使用res.render 将数据传递到您的视图。 expressjs.com/guide/using-template-engines.html,您可能还想检查返回的数据是数组还是真正的单个对象。
  • 感谢您的意见。我想通了,我只需要添加对象的编号,然后引用相应对象的属性。 res.send 是一个错字。实际代码有 res.render。

标签: node.js mongodb express mongoose pug


【解决方案1】:

正如 Sgnl 所说,在路线中,您需要像您一样渲染 Jade 视图并包含数据,但使用 res.render

apiRouter.get('/yfirlit', function(req, res){
  apiUser.find(function(err, users) {
    if (err) return next(err);
    res.render('index', {
      title: 'yfirlit',
      users: users
    })
  });
});

...而且我认为您还需要一个循环来显示 Jade 视图中的数据,因为它包含多个值:

if users
  each user in users
    div #{user.name}

【讨论】:

  • res.send 是一个错字。实际代码是 res.render,对不起我的错误。你是对的需要循环。一旦我做了 div #{users[2].name} ,就会显示正确的名称。感谢您的帮助:)
猜你喜欢
  • 2014-02-16
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 2019-03-13
  • 1970-01-01
  • 2015-09-24
  • 2012-08-09
相关资源
最近更新 更多