我正在尝试访问EJS模板中的嵌套数组.在我的后端,我正在渲染这个,'lists'是一个业务数组,userId是来自会话的用户_id.
res.render('listOfBusinesses', {lists:business, userId:loggedUserID});
Run Code Online (Sandbox Code Playgroud)
在前端我循环遍历列表并获取正确的属性值,但是一个属性是一组追随者_ids,我需要与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>
Run Code Online (Sandbox Code Playgroud)
上面的工作正常,但属性lists[i].followers是一个数组,我需要再次循环,但只是无法得到正确的语法.
我正在考虑以下几点:
for (var i = 0; i< lists[i].followers.length; i++){
if (list[i] == userId) {
<button>Follow</button>
} else {
<button>Unfollow</button>
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢任何建议!!
几乎已经解决了这个问题,卡住了一段时间,但部分问题是传递给渲染的变量是在条件语句中使用的,它正在检查对象id是否等于字符串.所以我调用toString()来确保它们是字符串.它现在返回正确的按钮,但它只返回一个按钮,而不显示其余业务列表的任何内容.任何人都可以了解为什么其他按钮没有显示
<% for (var j = 0; j < lists[i].followers.length; j++) {%>
<% if (lists[i].followers[j].toString() == userId.toString()) { %>
<button>Unfollow</button> …Run Code Online (Sandbox Code Playgroud)