Arrays 为什么我的For循环在EJS节点js中只返回一个值?
我正在构建一些东西,需要从MongoDB查询内容,并使用node.js中的EJS模板在前端显示结果 查询结果时一切都进行得很顺利。所有数组值在IArrays 为什么我的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;
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
});
});
});