【问题标题】:Get MySQL data in node.js (express) and print using EJS在 node.js (express) 中获取 MySQL 数据并使用 EJS 打印
【发布时间】:2015-12-14 05:05:18
【问题描述】:

我正在尝试获取我的 MySQL 表的数据并使用 EJS 在 HTML 中打印它们,但这不起作用。它告诉我print not defined。我该怎么办?

router.get('/data', function(req, res){
    res.render('print', {req : req, res : res});
    connection.query('SELECT * FROM users', function(err, result) {

        if(err){
            throw err;
        } else {
            for(x in result){
                res.locals.print =  result[x];
                console.log(result[x]);
            }
        }
    });
});
<!doctype html>
<html>
    <body>
        <div>
            <%= print %>
        </div>
    </body>
</html>

【问题讨论】:

    标签: mysql node.js express


    【解决方案1】:

    在渲染中,您可以返回一个带有查询数据的 JSON 变量并显示在视图中。 res.render 可以是这种方式的最后一条指令。有些是这样的:

    var obj = {};
    router.get('/data', function(req, res){
    
        connection.query('SELECT * FROM users', function(err, result) {
    
            if(err){
                throw err;
            } else {
                obj = {print: result};
                res.render('print', obj);                
            }
        });
    
    });
    

    <body>
        <table id="table" >  
            <thead>  
                <tr>  
                    <th>Username</th>  
                    <th>Password</th>  
                </tr>  
            </thead>  
             <tbody>  
             <% print.forEach(function (user) { %>
                <tr>  
                    <td><%= user.username %></td>  
                    <td><%= user.password %></td>
                </tr>                                   
             <% }) %>
             </tbody>
        </table>   
    </body>
    
    </html>
    

    【讨论】:

    • 我无法命名一个变量 return,所以我只是将它命名为 obj 并更改了其他 "return" 的必要项,但大部分代码保持原样,但它仍然告诉我 "print is没有定义的”。我是否可能需要在连接查询中循环结果参数?我已经做过很奇怪的事情,但可能是我做错了什么的。
    • 我更新了答案。在res.render('print', obj); 之后添加console.log(obj); 以显示咨询的价值。在这里发布结果后......
    • 啊,你不需要循环结果,这种方式有效。
    • 好的,我想我们正在取得进展。我添加了 console.log() 并打印出: { print: [ {username: 'Tony', password: 'Lee'}, {username: 'Mark', password: 'Douglas'}, {username: 'Marshall ', 密码: '汉密尔顿'} ], _locals() }
    • 我更新了答案,见&lt;%= print[0].username %&gt;
    猜你喜欢
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2018-05-14
    • 2013-07-19
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多