Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get MySQL data in node.js (express) and print using EJS

I'm trying to get the data of my MySQL table and print them in HTML using EJS, but this doesn't work. It tells me print not defined. What should I do?

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>
like image 530
Murad Elboudy Avatar asked Mar 15 '23 18:03

Murad Elboudy


1 Answers

In the render, you can return a JSON variable with the consulted data and show in the view. res.render can be the last instruction in this way. Some like this:

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>
like image 165
BrTkCa Avatar answered Mar 17 '23 07:03

BrTkCa