如何在 ejs 模板中使用数组显示来自 mongo 的 json 数据?
Posted
技术标签:
【中文标题】如何在 ejs 模板中使用数组显示来自 mongo 的 json 数据?【英文标题】:How to display the json data from mongo with arrays in ejs template? 【发布时间】:2020-06-24 04:23:24 【问题描述】:我正在使用猫鼬和快递等。我可以显示***值,例如“数字”,但无法获取“contact.email”。我在 server.js 文件中尝试了很多选项,但我希望有人可以帮助我从 ejs 端的 json 中提取这些信息。谢谢!
我在我的 ejs 模板中使用此代码:
`<% for(var i= 0 ; i < myObj.length; i++) %>
<li>
<span><%=myObj[i].number %>
</li>
<% %>
</ul>`
架构
"_id" : ObjectId("5e67c84a65a2893029991863"),
"number" : 5,
"contact" : [
"_id" : ObjectId("5e69a33a0208203268813e01"),
"email" : "dhenley@gmail.com",
]
`
【问题讨论】:
【参考方案1】:您可以在下面尝试此操作,因为您需要另一个循环来访问 json 中的联系人数组:
<% for(var i= 0 ; i < myObj.length; i++) %>
<li>
<span><%=myObj[i].number %>
</li>
<ul>
for(var j=0 ; j < myObj[i].contact.length; j++)
<li>
<span><%=myObj[i].contact[j].email %>
</li>
<% %>
</ul>
<% %>
</ul>`
【讨论】:
这是我认为我可能需要的很长的行,但现在我遇到了一个错误。它正在等待我的 server.js 文件上的捕获或异步或捕获。听起来对吗? 你可以使用 catch 我追踪到 ejs 代码的 catch 错误,仍在努力修复它。 在您的示例中,第二个 for 循环中缺少左大括号,遗憾的是我花了很长时间才注意到这一点。我会帮你编辑的,谢谢!【参考方案2】:假设您的对象格式如下:-
var myObj=
"_id" : ObjectId("5e67c84a65a2893029991863"),
"number" : 5,
"contact" : [
"_id": ObjectId("5e69a33a0208203268813e01"),
"email": "dhenley@gmail.com"
]
;
你必须像下面这样循环你的数据:-
<span><%=myObj.number %></span>
<ul>
<% for(var i= 0 ; i < myObj.contact.length; i++) %>
<li><%=myObj.contact[i].email %></li>
<% %>
</ul>`
注意:- 因为myObj
是一个对象。 myObj.contact
是 array
的 myObj
。所以在这种情况下你必须循环你的myObj.contact
。
【讨论】:
我以前试过这种方式,它不喜欢 myObj.contact.length 它说长度未定义。从我读到的你不能在这里做点符号。 @BrandoThom 请添加您的 JSON 格式。所以我可以更好地帮助你。以上是关于如何在 ejs 模板中使用数组显示来自 mongo 的 json 数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Nodejs/mongodb/mongoose 在 ejs/html 中显示数据库项目?
在 Express/EJS 模板中,循环数组的最简洁方法是啥?