某些对象值在ejs循环中无法访问

时间:2015-07-01 03:19:01

标签: javascript node.js express ejs

我正在尝试通过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>

结果为“未定义”,即使我知道值正确到达视图。我究竟做错了什么?提前谢谢!

1 个答案:

答案 0 :(得分:1)

Mongoose Document实例实际上并不直接将数据存储在文档实例本身,因为它具有特殊的getter / setter,以确保在其他Mongoose方法调用中使用该文档时所有内容都是一致的。

getter / setter使用_doc对象进行实际值存储,但您也可以调用toObject()返回包含预期文档值的普通js对象。