Arrays 为什么我的For循环在EJS节点js中只返回一个值?

Arrays 为什么我的For循环在EJS节点js中只返回一个值?,arrays,node.js,mongodb,ejs,Arrays,Node.js,Mongodb,Ejs,我正在构建一些东西,需要从MongoDB查询内容,并使用node.js中的EJS模板在前端显示结果 查询结果时一切都进行得很顺利。所有数组值在Iconsole.log()时返回,但在使用EJS模板的前端,只返回一个值 以下是我查询结果的代码: app.get('/', function (req, res) { user.find({}, { __v: 0, _id: 0}, function (err, result) { if (err) throw err;

我正在构建一些东西,需要从MongoDB查询内容,并使用node.js中的EJS模板在前端显示结果

查询结果时一切都进行得很顺利。所有数组值在I
console.log()时返回,但在使用EJS模板的前端,只返回一个值

以下是我查询结果的代码:

app.get('/', function (req, res) {
    user.find({}, { __v: 0, _id: 0}, function (err, result) {
        if (err) throw err; 
        result.forEach(function(u) {
            console.log(u.imgs); 
            res.render('pages/index',{
                path: u.imgs,
                state: req.session.state
        });   
    }); 
});
我在EJS中的代码:

<% for(var i=0; i<path.length; i++) { %>        
    <%= path[i] %> 
<% } %>

您认为我的代码有什么问题?

您需要HTML标记,如

<ul>
<% for(var i=0; i<path.length; i++) {%>
   <li><%= path[i] %></li>
<% } %>
</ul>

    删除查询中的forEach循环,并将结果数组映射到path属性,即

    app.get('/', function (req, res) {
        user.find({}, { __v: 0, _id: 0}, function (err, result) {
            if (err) throw err; 
            res.render('pages/index',{
                path: result.map(u => u.imgs),
                state: req.session.state
            });  
        }); 
    });
    

    为什么要循环执行
    res.render()
    调用?这将一个接一个地即时呈现
    n
    页数,其中
    n
    结果
    数组的长度,因此,从这个角度来看,您不会真的希望继续进行呈现调用,因为浏览器中的视图会有效地不断刷新。另外,您能否向我们展示
    用户
    模式定义以及前端的最终目标是什么,您是否尝试显示每个用户的图像路径?否,我不尝试显示每个用户的图像路径。我在
    user
    模式中提供了代码@chridamWhat是您期望的输出?数组中有两个2值,但只显示一个(第一个)。这是一个救生圈。它现在工作正常。谢谢@chridam
    app.get('/', function (req, res) {
        user.find({}, { __v: 0, _id: 0}, function (err, result) {
            if (err) throw err; 
            res.render('pages/index',{
                path: result.map(u => u.imgs),
                state: req.session.state
            });  
        }); 
    });