我正在尝试通过ejs访问forEach循环中的一些javascript对象的所有值来解决问题。
使用以下.....
<ul>
<% users.forEach(function(user) { %>
<li><%= user %></li>
<% }); %>
</ul>
将对象正确显示为类似的列表..
{ _id: 55907b9a84218bf511000001, __v: 0, bio: 'awesome bio', name: 'Joe Bloggs', email: 'joe@mail.com'}
{ _id: 5590818fba82f6e31a000001, bio: 'Another great bio', name: 'Rose', email: 'rosey@mail.com' }
使用....
<ul>
<% users.forEach(function(user) { %>
<li><%= user.id %></li>
<% }); %>
</ul>
按预期显示对象ID,如此......
55907b9a84218bf511000001
5590818fba82f6e31a000001
问题是当我尝试使用
访问'name'或'email'值时<li><%= user.name %></li>
<li><%= user.email %></li>
结果为“未定义”,即使我知道值正确到达视图。我究竟做错了什么?提前谢谢!
答案 0 :(得分:1)
Mongoose Document实例实际上并不直接将数据存储在文档实例本身,因为它具有特殊的getter / setter,以确保在其他Mongoose方法调用中使用该文档时所有内容都是一致的。
getter / setter使用_doc
对象进行实际值存储,但您也可以调用toObject()
返回包含预期文档值的普通js对象。