Handlebars在Node Express应用程序中渲染来自json数组的额外空对象
Handlebars renders extra empty objects from json array in Node Express app
我正在尝试从对 REST API 的调用中获取数据,并使用 Handlebars 将其呈现为列表,这是我在 Node Express 应用程序中的视图引擎
这是我的路线:
router.get('api/projects', function(req, res){
Project.find(function(err, projects){
if(err)
res.send(err);
console.log(projects);
res.render('list-view', projects);
});
});
"项目"JSON 数组包含具有名称和_id键的不同项目
这是我在list-view.hbs上的html:
{{#each .}}
<div class="thumbnail">
<div class="caption">
<h5> Name: {{name}} </h5>
</div>
</div>
{{/each}}
出于某种原因,我的列表视图页面将按计划在列表中呈现项目,但随后将始终在列表末尾显示一些空项目。 我不知道为什么。 假设我的项目数组中有 8 个项目......我的页面将正确呈现所有 8 个,但总共 11 个,因为最后几个是空的。 我使用 console.log(projects) 来验证数组中只有 8 个项目。 关于为什么我得到额外的任何想法?
我想出了解决这个问题的方法。 项目 json 数组需要作为单个对象传递给车把:
router.get('/api/projects', function(req, res){
Project.find(function(err, projects){
if(err)
res.send(err);
res.render('list-view', {projects: projects});
});
});
然后我的 #each 助手看起来像这样:
{{#each projects}}
<div class="thumbnail">
<div class="caption">
<h5> Name: {{name}} </h5>
</div>
</div>
{{/each}}
现在列表已正确呈现。
关于接受的答案,
拥有
-
res.render('list-view', {projects: projects})
在你的 JavaScript 和 -
{{#each projects}}
车把模板
相当于拥有
-
res.render('list-view', projects)
在你的 JavaScript 和 -
{{#each .}}
或{{#each this}}
在车把模板中。
您的问题可能是您正在从包含所有可序列化属性的 API 传入对象。
请尝试改用以下内容:
res.render('list-view', projects.get());
.get()
只返回我们关注的数组。
相关文章:
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)
- 使用 Javascript 将行添加到数组 json
- PHP数组JSON编码和该对象在ExtJs中解码
- 数组json转换为数组json
- 将Blob文本转换为Javascript中的数组/JSON对象
- 如何合并这些数组/json 对象
- 尝试从数组 JSON 键中删除引号
- JavaScript 中的数组 JSON
- 在数组 JSON 格式的 JavaScript 变量末尾添加新地址
- 如何访问这个Javascript数组(JSON对象?)
- rails传递记录数组(JSON)
- 按值提取对象/数组json vs数组
- 获取具有子数组json值的数组的值
- Object对象数组Json.字符串数组的字符串化
- 如何在Ext js 4.1中过滤数组json
- PHP -多维数组Json
- 正在分析数组Json以选择Tag
- 试图将字符串数据转换为数值数据,将数据放入数组的数组(Json)
- 从数组json、javascript中的specf值中删除引号
- 使用JavaScript或jQuery读取数组JSON