把手从阵列渲染全部

时间:2012-07-28 16:08:52

标签: node.js mongoose handlebars.js

在我的appjs文件中,我试图按降序显示所有文章标题。这很好用,问题是mongoose返回一个数组,我不知道如何在把手中写这个。

var bmtitles = BlogModel.find().select('title date').sort("date", -1);

bmtitles.execFind(function(err, ttles) {
    console.log(ttles);
            var model = {
                    layout:'blog.hbs',
                    BmTitles: ttles,
                };
    //render page
    res.render('blog', model);
});

我尝试过这样的事情但没有工作:

{{BmTitles.n.title}}
{{BmTitles.title}}
{{BmTitles}}

这是ttles变量返回的内容(只有两个帖子用于测试)

[ { _id: 5011b563a947b943dc32d6f5,
    title: 'Blog title one',
    date: Sun Jan 01 2012 18:00:00 GMT-0600 (CST) },
  { _id: 5011c155a947b943dc32d6f6,
    title: 'secondpost',
    date: Sat Dec 31 2011 18:00:00 GMT-0600 (CST) } ]

1 个答案:

答案 0 :(得分:6)

您希望在阵列上使用#each to iterate

  

each阻止帮助

     

您可以使用内置的each帮助程序迭代列表。在块内,您可以使用this来引用正在迭代的元素。

这样的事情:

{{#each BmTitles}}
    <p>{{_id}}: {{title}}</p>
{{/each}}

演示:http://jsfiddle.net/ambiguous/vZyHn/

或者你可以Mustache-style

  

<强>节

     

分段一次或多次渲染文本块,具体取决于当前上下文中键的值。

     

一节从一磅开始,以斜线结尾。也就是说,{{#person}}开始了一个&#34; person&#34; {{/person}}结束时的部分。

所以这也有效:

{{#BmTitles}}
    <p>{{_id}}: {{title}}</p>
{{/BmTitles}}

演示:http://jsfiddle.net/ambiguous/qyE9b/