试图用Handlebars迭代一个数组

时间:2015-11-10 00:13:44

标签: javascript arrays node.js mongodb handlebars.js

试图找出如何使用Handlebars迭代数组。我知道我错过了什么。

节点:

Docket.find({}, function(err, dockets){
    for(var i = 0; i<dockets.length; i++){ 
      var doclist = dockets[i];

           var model = {
              galleryName: doclist.galleryName,
              address: doclist.address
           };
    };
  res.render('dockets/index', model);
});

车把:

    {{#each doclist}}
        <li><h3>{{this.galleryName}}</h3><br/><p>{{this.address}}</p></li>
    {{/each}}

mongo中的数组:

[{
"Name":"Jeff",
"address":"Koehler st"
},
{
"Name":"Todd",
"address":"Mission st"
}]

2 个答案:

答案 0 :(得分:0)

您的模板没有任何问题,但您渲染模板的上下文与模板的期望值不匹配。你需要一个&#39; doclist&#39; local包含一组对象,每个对象都具有galleryNameaddress属性。你从mongo读取的数组应该足够了。尝试

Docket.find({}, function (err, dockets) {
  res.render('dockets/index', { doclist: dockets });
});

答案 1 :(得分:0)

使用JavaScript .map() 方法创建一个只包含所需属性的新对象数组,如下所示:

Docket.find({}, function(err, dockets){
    var model = dockets.map(function (doc){
        return {
            "galleryName": doc.galleryName,
            "address": doc.address
        };
    });
    res.render('dockets/index', { "doclist": model });
});