代码之家  ›  专栏  ›  技术社区  ›  Adetona Abiodun Abdulquadri

为什么EJS模板中的数组显示的是一长串字母,而不是完整的结果?

  •  0
  • Adetona Abiodun Abdulquadri  · 技术社区  · 7 年前

    我想显示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>
    

    我做错了什么?请帮忙。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Lena Kaplan    7 年前

    看起来您缺少结果的声明,这使得results变量成为全局变量,其值可能无法预测,因为它可能会被任何人更改,发送给客户端的结果似乎是字符串,您迭代字符串的字符并打印它。尝试将let添加到结果声明中。

    let results = ...
    

    同时划出u并对其进行解析,如you'r示例中的两个地方所做:

    u=JSON.parse(JSON.stringify(u)) 
    JSON.parse(JSON.stringify(u.meme.imgs))
    

    将返回相同的对象,这样做没有任何效果,只会使代码混乱,可读性降低。