这个让我感到困惑。
我正在将一个对象传递给ejs
模板;如果我输出那个对象,我看到了我的期望:
{ _id: 5504a5e7ff67ac473dd7655c, code: 'GB', name: 'United Kingdom', slug: 'uk', place: 'the UK', regions: [ 'London', 'Hampshire' ] }
如果我在循环中输出name
,它就像我期望的那样工作:
<%countries.forEach (function(country, index) {%>
<li><%= country.name %></li> // Outputs 'United Kingdom'
<% }) %>
但是,如果我尝试访问以外的任何名称,则输出空白:
<%countries.forEach (function(country, index) {%>
<li><%= country.code %></li> // Outputs ''
<% }) %>
我无法弄清楚,我做的事情显然是错误的,或者这是否像我想的那样疯狂?
编辑:_id
也将输出。因此_id
和name
按预期输出,所有其他输出在直接调用时输出为空白。
答案 0 :(得分:0)
事实证明我犯了一个错误,虽然不是我预期会导致这个问题的错误。
我用于检索国家/地区数据的架构的Mongoose模型中包含错误的架构。它是来自另一个模型的复制和粘贴工作,我显然更新了除模式本身之外的所有内容,重要的是name
是两个模式之间唯一的常见变量,所以我猜这就是为什么这是唯一的模式“工作”(当然还有_id)。
如果有人能告诉我为什么这就是我想知道的情况,因为虽然这绝对是解决方案,但我不知道为什么架构会影响ejs
的能力读取对象中的变量,但没有问题完全输出对象本身。
答案 1 :(得分:0)
{ _id: 5504a5e7ff67ac473dd7655c, code: 'GB', name: 'United Kingdom', slug: 'uk', place: 'the UK', regions: [ 'London', 'Hampshire' ] }
你不要在对象上循环
<%countries.forEach (function(country, index) {%>
<li><%= country.name %></li> // Outputs 'United Kingdom'
<% }) %>
在ejs视图中你正在尝试循环游览
在控制器内部,您必须传递给这样的视图
[{ _id: 5504a5e7ff67ac473dd7655c, code: 'GB', name: 'United Kingdom', slug: 'uk', place: 'the UK', regions: [ 'London', 'Hampshire' ] }]
forEach适用于javascript中的数组