Javascript 在EJS中引用对象时遇到问题
我有一个使用EJS传递到模板中的对象,我继续收到一个错误,说Javascript 在EJS中引用对象时遇到问题,javascript,node.js,ejs,Javascript,Node.js,Ejs,我有一个使用EJS传递到模板中的对象,我继续收到一个错误,说无法读取未定义的的属性“link”,这是对象,这是模板代码 I console.log对象并获取以下信息: { _id: 583e4b76f1c8771c17d68ef2, username: 'asdf', __v: 0, favoriteMoments: [], favoriteEvents: [], likes: [], friends: [], moments: [], categories: [
无法读取未定义的
的属性“link”,这是对象,这是模板代码
I console.log对象并获取以下信息:
{ _id: 583e4b76f1c8771c17d68ef2,
username: 'asdf',
__v: 0,
favoriteMoments: [],
favoriteEvents: [],
likes: [],
friends: [],
moments: [],
categories: [],
events:
[ { _id: 583e4bf8cc11c61c2887aa38,
title: 'asdfasdf',
description: 'asdf',
__v: 0,
comments: [],
photos: [Object],
moments: [],
category: [Object],
owner: [Object] }
] }
以下是模板:
<div class="well event_list_page_event_boxes masonry_box">
<div class="img-responsive">
<a href="/event/<%= events._id %>">
<% if (events.photos.link === null){%>
<div class="event_list_page_event_photo"><p>No Image Here</p></div>
<% } else {%>
<img class="event_list_page_event_photo" src="<%= events.photos.link %>" border="0" style="max-width: 100%">
<% } %>
<%}) %>
<div class="row">
<div class="col-sm-9">
<h4 class="event_list_page_event_header"><%= events.title %></h4>
</div>
<div class="col-sm-3">
<p class="event_list_page_event_date"><%= events.date %></p>
</div>
</div>
<p class="event_list_page_event_description"><%= events.description %> </p>
</a>
</div>
</div>
我知道它没有看到
事件。照片
对象,但我不确定如何使其可见,以便显示我的数据。事件
是一个数组,因此:
events.photos.link
您需要使用数组索引,例如:
events[0].photos.link
或者,您需要迭代事件
数组
如果试图为
事件数组中的每个事件创建新的HTML块,则需要在模板中使用某种循环(例如for
循环或.forEach()
循环),以便可以循环数组的每个元素
在本文的“创建模板”一节中,有一个ejs的for
循环示例:您能用传递事件对象的代码更新您的问题吗?打印事件数组,这样您就可以了解它的结构,并解决需要迭代数组的问题,这不是object.keys
应该做的吗?@illcrx-object.keys()
获取对象的所有属性。它通常不用于阵列。我们无法在不了解您实际想要实现的目标的情况下进一步帮助您。你的问题并没有描述这一点,所以你说我在数组上使用对象调用,哦。我要做的是显示模板上的所有事件
属性。在第一个代码段中,您会看到一个events
键,该键将列出所有事件,示例中只有一个事件。将会有很多活动。我能不能把它做成一个对象,然后用它来完成?我可以拥有一个没有钥匙的对象对象吗?我真的不需要任何键,它应该只遍历事件。@illcrx-如果希望模板遍历事件,为每个事件创建一个新块,那么在模板中使用for
循环。示例:在“创建模板”部分。再一次-你的问题没有说明你想要完成什么(你想要达到什么样的产出),所以我们无法进一步帮助你。