Javascript 某些对象值在ejs循环中不可访问

Javascript 某些对象值在ejs循环中不可访问,javascript,node.js,express,ejs,Javascript,Node.js,Express,Ejs,我试图解决一个问题,即使用ejs访问forEach循环中某些javascript对象的所有值 使用以下 <ul> <% users.forEach(function(user) { %> <li><%= user %></li> <% }); %> </

我试图解决一个问题,即使用ejs访问forEach循环中某些javascript对象的所有值

使用以下

            <ul>
                <% users.forEach(function(user) { %>

                          <li><%= user %></li>

                <% }); %>
            </ul>
使用

            <ul>
                <% users.forEach(function(user) { %>

                          <li><%= user.id %></li>

                <% }); %>
            </ul>
问题是当我尝试使用访问“name”或“email”值时

<li><%= user.name %></li>
<li><%= user.email %></li>

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

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


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

    是否尝试了
    user.\u doc.name
    user.\u doc.email
    ?如何将用户数组传递到模板?感谢@mscdex修复了它。我以前没见过这个。如果您能告诉我为什么需要_doc来访问这些值,而不是user.id,我将非常感谢@BidhanA感谢您的回复。对于其他有类似问题的人来说,很明显,我只是简单地传递在请求回调函数中返回的用户数据,就像这样
    res.render('index.ejs',{users:users})谢谢你的解释。还有一件事让我困惑。我有另一个应用程序实例通过mongoose从mongodb检索数据,其方式与使用常规点符号显示所有属性的方式完全相同。在什么情况下有效?它工作的应用程序中唯一的真正区别是我使用的是快速路由器格式
    router.route('/users').get(function(req,res)
    ,而不是常规的
    app.get('/users)
    。我还尝试了匹配两个应用程序之间的所有依赖项(其中一个有最近的mongoose),但问题仍然存在。
    55907b9a84218bf511000001
    5590818fba82f6e31a000001
    
    <li><%= user.name %></li>
    <li><%= user.email %></li>