gpt4 book ai didi

javascript - 将查询结果从 MySQL 发送到 .ejs

转载 作者:行者123 更新时间:2023-11-29 21:10:46 25 4
gpt4 key购买 nike

我刚刚开始学习node.js,并尝试从MySQL 获取查询结果并将它们发送到ejs 文件。我原来的 app.js 看起来像这样。

这是我原来的 app.js:

var app = express();
var client = mysql.createConnection({
user: 'user',
password: '',
database: 'DB_practice'
});
app.get('/', function(request, response){
var result;
fs.readFile('list.ejs', 'utf8', function(error, data){

client.query('SELECT * FROM test', function(error, results){
result = results;
console.log("Query results(inside): " + JSON.stringify(results));
});
console.log("Query results(outside): " + JSON.stringify(results));
response.render(__dirname + '/list', {data: result} );

});
});

但我注意到在 client.query() block 之外使用 render() 方法并没有按顺序执行代码。 console.log("查询结果(里面): "+ JSON.stringify(results)); line 以数组形式很好地打印结果。但是当我在outside(console.log("Query results(outside): "+ JSON.stringify(results));)打印它时,它返回未定义,这意味着“inside”打印函数在“outside”之后执行打印功能。所以我尝试将 render() 放在查询 block 内,如下所示:

app.get('/', function(request, response){
var result;
fs.readFile('list.ejs', 'utf8', function(error, data){

client.query('SELECT * FROM test', function(error, results){
result = results;
response.render(__dirname + '/list', {data: results} );
console.log("Query results(inside): " + JSON.stringify(results));
});
console.log("Query results(outside): " + JSON.stringify(results));


});
});

它提示我在 list.ejs 中传递查询结果的变量未定义。这是 list.ejs 中的部分:

    <script type='text/javascript'>
var row =<%-JSON.stringify(data)%>
</script>
<% row.forEach(function(item, index){ %>
<tr>
<td><a href="/delete/<%= item.id %>">DELETE</a></td>
<td><a href="/edit/<%= item.id %>">EDIT</a></td>
<td><%= item.id %></td>
<td><%= item.name %></td>
<td><%= item.phone_no %></td>
</tr>
<% }); %>

它说该行未定义。

我已经为此苦苦挣扎了几天。任何帮助将不胜感激。

最佳答案

只需使用以下代码更新您的 list.ejs -

list.ejs

<% data.forEach(function(item, index){ %>
<tr>
<td><a href="/delete/<%= item.id %>">DELETE</a></td>
<td><a href="/edit/<%= item.id %>">EDIT</a></td>
<td><%= item.id %></td>
<td><%= item.name %></td>
<td><%= item.phone_no %></td>
</tr>
<% }); %>

标签 <%- %> 内的任何内容都将使用未转义的 HTML 数据打印到输出。

关于javascript - 将查询结果从 MySQL 发送到 .ejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36386827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com