我正在尝试输出位于 json 对象中的数组的特定索引。
例如,我从 MongoDB 检索了以下 json 对象
{ _id: 55b65199c92d15d80fd94803,
site: 'test.com',
company: 'test',
__v: 0,
votes: [
{ vote_user: '55a11de3e4c770982730ccb9' },
{ vote_user: '55a11de3e4c770982730612a' }
]
}
该对象作为名为 suggest 的对象从 Nodejs 路由渲染传递,并通过 EJS 循环使用
<% suggestion.forEach(function(item){ %><%}%>
在此阶段,我尝试使用以下方法从 votes 数组中检索特定的 vote_user 对象
<% suggestion.forEach(function(item){ %><%- item.votes[0] %><%})%>
但是,我得到的只是未定义
我尝试将“item”分配给一个 javascript 变量,然后将其记录到浏览器控制台,这完全按照我想要的方式工作 - 正如我得到以下结果:
Object {vote_user: "55a11de3e4c770982730ccb9"}
真的无法理解为什么它不能像我想象的那样工作。
编辑
由于不太清楚设置的样子,这里是实际使用的代码:
EJS
<% suggestion.forEach(function(item, i){ %>
<div class="suggestion-entry suggestion-<%- item._id %>" data-entry="<%- item._id %>">
<!--<%- item %>-->
<div class="entry-info">
<div class="voting">
<script>
console.log(<%- item.votes %>[0].vote_user)
</script>
<%- item.votes[0].vote_user %>
<div class="vote vote-up"><a><i class="fa fa-chevron-up"></i></a></div>
<div class="vote vote-down"><a><i class="fa fa-chevron-down"></i></a></div>
</div>
<div class="image"><img src='http://placehold.it/130x90.jpg'></div>
<div class="company">
<h2><a href="<%= item.site %>"><%= item.company %></a></h2>
<span class="desc"><%= item.company %></span>
</div>
</div>
</div>
<% }); %>
脚本标签输出实际的 vote_user 值而不是未定义的值。
Nodejs 路由
app.get('/', function(req, res) {
Suggestion.find(function(err, suggestions){
res.render('index', { message: req.flash('message'), title: "title", user : req.user, suggestion : suggestions });
})
});
MongoDB文档如开头所写
最佳答案
对已编辑问题的回答:
首先,您的id
需要是一个字符串。问题似乎出在使用<%-
标签。也许您可以找到有关其工作原理的文档,但在网站上进行测试时,这根本不起作用<%=
工作完美。精简概念证明:
<%
var suggestion = [{ _id: '55b65199c92d15d80fd94803',
site: 'test.com',
company: 'test',
__v: 0,
votes: [
{ vote_user: '55a11de3e4c770982730ccb9' },
{ vote_user: '55a11de3e4c770982730612a' }
]
}];
%>
<% suggestion.forEach(function(item, i){ %>
<div class="suggestion-entry suggestion-<%= item._id %>" data-entry="<%= item._id %>">
<li><%= item.votes[0].vote_user %></li>
<li><%= item.site %></li>
<li><%= item.company %></li>
</div>
<% }); %>
将其粘贴到网站上的测试文本区域中,您将看到它的工作原理。如果这仍然不适用于您的代码,则说明发生了完全不同的情况。
关于javascript - 按索引从数组输出返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31658229/