使用ejs组件将数据从js发送到html

时间:2016-03-31 14:40:47

标签: javascript mysql node.js ejs

我刚开始学习JS和node.js.我一直试图通过ejs组件将数据从MySQL中的数据库发送到html。我尝试使用ejs.render(data,{data:something_from_DB});发送获取的信息(something_from_DB),由"数据"标识。然后我使用了标识符" data"在html的ejs代码中,但它抱怨数据没有在html文件中定义。

这是js代码。

var mysql = require('mysql');
var fs = require('fs');
var http = require('http');
var express = require('express');
var ejs = require('ejs');
var app = express();
app.use(app.router);

var client = mysql.createConnection({
    user: 'username',
    password: 'password',
    database: 'database_name'
});

app.get('/', function(req, res){

    fs.readFile('list.html', 'utf8', function(error, data){
        client.query('SELECT * FROM test_table', function(error, results){
            console.log(results);
            res.send(ejs.render(data), {data: results});
        });
    });
});

这是list.html

中的部分
<% data.forEach(function(item, index){ %>
<tr>
    <td><%= item.id %></td>
    <td><%= item.name %></td>
    <td><%= item.phone_no %></td>
</tr>
<% }); %>

当我打印结果时,我得到:

[ RowDataPacket { id: 1, name: 'PETER', phone_no: '0100000000' } ]

看起来很好。我希望通过&#34;数据&#34;但我不认为这种情况正在发生。

如果我使用的语言不合适,请纠正我。

1 个答案:

答案 0 :(得分:0)

我认为有一个简单的错误。只是试试这个。

      res.render('ejs file name',{data: results,});