试图找出如何使用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"
}]
答案 0 :(得分:0)
您的模板没有任何问题,但您渲染模板的上下文与模板的期望值不匹配。你需要一个&#39; doclist&#39; local包含一组对象,每个对象都具有galleryName
和address
属性。你从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 });
});