0
我剛剛開始學習node.js,並試圖從MySQL獲取查詢結果並將它們發送到ejs文件。我原來的app.js看起來像這樣。將查詢結果從MySQL發送到.ejs
這是我原來的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()塊外渲染()方法,以未執行的代碼。 console.log(「Query results(inside):」+ JSON.stringify(results));以數組形式將結果打印出來。但是當我在外部打印它時(console.log(「Query results(outside):」+ JSON.stringify(results));),它返回undefined,這意味着「inside」打印功能在「outside」打印功能。所以,我試圖將渲染()的查詢塊內爲這樣:
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>
<% }); %>
它表示該行未定義。
我一直在掙扎着這幾天。任何幫助將不勝感激。
@ user3369873,希望這將有助於解決您的問題。 –