2016-04-03 42 views
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> 
    <% }); %> 

它表示該行未定義。

我一直在掙扎着這幾天。任何幫助將不勝感激。

回答

0

只需用下面的代碼給出更新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數據。

+0

@ user3369873,希望這將有助於解決您的問題。 –