猫鼬和节点错误:无法读取未定义的属性“ forEach”

时间:2020-01-09 18:27:53

标签: javascript node.js express mongoose ejs

我想将MongoDB中的所有内容显示到.ejs文件中的表中。但是我总会得到我在标题中写的错误。

以下是一些代码段:

这是我的路由js文件(users.js)

router.get ('/Benutzerverwaltung_Mitarbeiter', async (req, res) => {

    User.find(function (err, users) {

        // if there is an error retrieving, send the error.
        // nothing after res.send(err) will execute
        if (err)
            return res.send(err);
        res.json(users);
        res.render('Benutzerverwaltung_Mitarbeiter',{
            users: res.user
        });
    });
});

和我的.ejs文件:

 <%- include('../routes/users.js'); %>
            <div>
                <table id="tabelle" class="cell-border"  class="table table-striped" cellspacing="0" class="table table-hover">
                    <thead>
                    <tr>
                        <th>UserID</th>
                        <th>Rolle</th>
                    </tr>
                    </thead>
                    <tbody>
                    <tr>
                    <% users.forEach (function (user) { %>
                    <td><%user.username%></td>
                    </tr>
                    <td><%user.admin%></td>
                    <%});%>
                    </tbody>
                </table>
                </div>

希望您能帮到我:) 奶酪,梅尔特

2 个答案:

答案 0 :(得分:2)

res.jsonres.render都是“终端”方法-实际上,您在“完成”时仅应使用一次,而不能在同一方法中使用。

我认为在这种情况下,您尝试返回html而不是json,因此您需要res.render。尝试此修改:

User.find(function (err, users) {

    // if there is an error retrieving, send the error.
    // nothing after res.send(err) will execute
    if (err)
        return res.send(err);
    res.render('Benutzerverwaltung_Mitarbeiter',{
        users: users || []
    });
});

答案 1 :(得分:0)

在users.js中的res.render回调中,当您分配users属性时,我发现了一个错字。

如果未定义应该保存数组的变量,则数组原型函数将始终在上面抛出该错误。