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

时间:2018-02-19 06:32:58

标签: arrays node.js mongodb ejs

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

查询结果时一切顺利。我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] %> 
<% } %>

这是user

中的代码
var userSchema = mongoose.Schema ({


imgs: String

})

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

2 个答案:

答案 0 :(得分:1)

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

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
        });  
    }); 
});

答案 1 :(得分:0)

您需要HTML标签,例如

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