我想显示来自MongoDB的数组结果,但是我在使用EJS模板在前端显示它们时遇到问题。
这是我用来查询结果的代码:
app.get('/', function (req, res) {
user.find({}, {twitter: 0, __v: 0, _id: 0}, function (err, result) {
if (err) throw err;
//console.log(result);
result.forEach(function(u) {
u=JSON.parse(JSON.stringify(u))
results = JSON.parse(JSON.stringify(u.meme.imgs))
console.log(results);
return res.render('pages/index', {
path: results,
state: req.session.state
});
});
});
});
console.log
完全显示了我的数组结果,但是当我想要使用EJS在前端显示时,它给了我这个不必要的字母列表。
这是数组返回的结果:
"
h
t
t
p
:
/
/
l
o
c
a
l
h
o
s
t
/
p
u
b
l
i
c
/
I
m
a
g
e
s
/
o
k
r
o
.
j
p
g
"
这是在前端显示结果的代码:
<ul>
<% for(var i=0; i<path.length; i++) { %>
<li>
<%- path[i] %>
</li>
<% } %>
</ul>
我做错了什么?请帮忙。
答案 0 :(得分:0)
看起来你缺少结果声明,这使得结果变量成为全局变量,并且它的值可能是不可预测的,因为它可能被任何人改变,似乎发送给客户端的结果是字符串,并且你迭代字符串的字符并打印出来。尝试将let添加到结果声明中。
let results = ...
同样strinigfy你然后解析它,就像在你的例子中的两个地方所做的那样:
u=JSON.parse(JSON.stringify(u))
JSON.parse(JSON.stringify(u.meme.imgs))
将返回相同的对象,它没有效果,只会使代码混乱且可读性降低。