EJS 仅输出对象的某些部分

EJS only outputting some parts of object…

本文关键字:些部 对象 输出 EJS      更新时间:2023-09-26

这个让我感到困惑。

我正在将一个对象传递到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输出,所有其他输出在直接调用时都为空白。

事实证明我犯了一个错误,尽管我不希望导致此问题。

用于检索国家/地区数据的架构的猫鼬模型包含错误的架构。这是来自另一个模型的复制和粘贴作业,我显然更新了除模式本身之外的所有内容,重要的是name是两个模式之间唯一的公共变量,所以我猜这就是为什么这是唯一一个"有效"的原因(当然还有_id)。

如果有人能告诉我为什么会这样,我很想知道,因为尽管这绝对是解决方案,但我不知道为什么模式会影响ejs读取对象中变量的能力,但没有问题完全输出对象本身。

{ _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 中的数组上工作