【发布时间】:2014-03-31 20:45:02
【问题描述】:
我正在使用 node、mongo 和jade 构建一个应用程序,它允许我将项目添加到数据库中,然后使用jade 在页面上呈现这些项目。这是一个内容站点,因此我只希望在页面上呈现三个最新的数据库项。当我在jade中使用for循环时,它会遍历整个数据库并为数据库中的每个项目创建一个新的DOM元素。这是我目前使用的代码:
for item in docs
div(class='item')
div(class='overlayHover')
div(class='protectLink')
a(class='readMore' href='#') READ MORE
div(class='overlayText')
h3 #{item.description}
img(class='triImage' src='http://cdn.modernfarmer.com/wp-content/uploads/2014/01/ChiangMai10.jpg')
div(class='item')
div(class='overlayHover')
div(class='protectLink')
a(class='readMore' href='#') READ MORE
div(class='overlayText')
h3 #{item.description}
img(class='triImage' src='http://media-cache-ak0.pinimg.com/236x/6e/f1/82/6ef182a1085c987bf8143d9b2d4ea42b.jpg')
div(class='item')
div(class='overlayHover')
div(class='protectLink')
a(class='readMore' href='#') READ MORE
div(class='overlayText')
h3 #{item.description}
img(class='triImage' src='http://cdn.shopify.com/s/files/1/0257/8507/products/warren-keelan-surf-photo13sq_medium.jpg?v=1395110040')
我不认为 for 循环是我正在寻找的。我希望修复这三个元素,唯一改变的是它们的 item.description。
为了从我的 mongo 数据库中仅提取三个最近的项目,我应该查看一个特定的玉方法吗?
请告诉我。谢谢。
【问题讨论】:
-
Jade 没有从 MongoDB 中提取任何内容。它只是显示您传递给它的内容。如果您想对数据进行限制和排序,请更改您的 MongoDB 查询或在将文档数组传递给 Jade 之前对其进行预处理。
-
啊,这很有意义。是否可以将多个对象发送到玉?例如 res.render('index' , {docs:docs, items:items})?
-
@user3294779 是的,这样就可以了。更一般地说,如果您只选择您想要的三个元素,或者将数组(例如使用切片)截断为三个元素,然后在 Jade 中使用 for 循环,我认为您将拥有更方便的维护。它会干净得多。在如此简洁的模板语言中存在冗余也有点讽刺。 :-)