【发布时间】:2023-03-21 19:58:01
【问题描述】:
我正在尝试访问 EJS 模板中的嵌套数组。在我的后端,我正在渲染这个,'lists' 是一个业务数组,userId 是会话中的用户 _id。
res.render('listOfBusinesses', {lists:business, userId:loggedUserID});
在前端,我正在遍历列表并获取正确的属性值,但是一个属性是一组关注者_id,我需要与 userId 交叉检查以提供关注按钮或取消关注按钮。
前端是这样的:
<% for (var i = 0; i < lists.length; i++) { %>
<div class="col-xs-6 col-sm-4 panel">
<a href="/busProfileFromUser?busId=<%= lists[i]._id %>">
<img src="<%= lists[i].imgpath %>" class="img-responsive follow-img" />
</a>
</div>
以上内容按预期工作,但属性 lists[i].followers 是一个数组,我需要再次循环,但无法获得正确的语法。
我的想法是这样的:
for (var i = 0; i< lists[i].followers.length; i++){
if (list[i] == userId) {
<button>Follow</button>
} else {
<button>Unfollow</button>
}
}
非常感谢任何建议!
几乎解决了这个问题,卡住了一段时间,但部分问题是在条件语句中使用了传递给渲染的变量,该条件语句正在检查对象 id 是否等于字符串。所以我打电话给 toString() 以确保它们是字符串。它现在返回正确的按钮,但是它只返回一个按钮,并且没有为其余的企业列表显示任何内容。 任何人都可以解释为什么其他按钮没有显示
<% for (var j = 0; j < lists[i].followers.length; j++) {%>
<% if (lists[i].followers[j].toString() == userId.toString()) { %>
<button>Unfollow</button>
<% } else { %>
<button>FOLLOW</button>
<% } %>
<% } %>
【问题讨论】: