2016-12-26 12 views
1

我正在學習Node.js,但我有點困惑。使用Node.js打印HTML中的HTML數據

我用下面的代碼接收數據:

var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'root', 
    password : '', 
    database : 'db' 
}); 

connection.connect(); 

connection.query('SELECT * FROM users', function(err, rows, fields) 
{ 
    if (err) throw err; 

    console.log(rows[0]); 

}); 

connection.end(); 

我調試控制檯是從我的數據庫表的第一行,但我想在我的HTML頁面來打印這個值。我怎樣才能做到這一點?

謝謝。

回答

0

您需要查看creating an http server才能將這些結果發送到html網站。

var express = require('express'); 
var app = express(); 

app.use(express.static('public')) 

var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'root', 
    password : '', 
    database : 'db' 
});   

app.get('/rows', function (req, res) { 
    connection.connect(); 

    connection.query('SELECT * FROM users', function(err, rows, fields) 
    { 
     connection.end(); 

     if (err) throw err; 

     res.json(rows); 

    }); 
}); 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
}); 

運行此文件將在您的機器上的端口3000上創建一個服務器。

在您的項目中,在根級別創建一個名爲public的目錄。在那裏,你可以創建一個名爲index.html的東西,如以下文件:

<html> 
    <head> 
     <title>My db rows</title> 
    </head> 

    <body> 
     <div id="table"></div> 

     <script type="text/javascript"> 
      var opts = { 
       url: 'http://localhost:3000/rows/' 
      }; 

      fetch(opts) 
       .then((res) => { 
        if (res.ok) { 
         return res.json(); 
        } 
        }) 
        .then((rows) => { 
         for (let row of rows) { 
          // row will be a mysql row -- you can loop over these and do what you want with them 
         } 
        }) 
        .catch(console.log); 
     </script> 
    </body> 
</html> 

注:我使用的是新的API獲取要執行我的要求,但是你可以很容易地使用jquery或XHR。獲取API可以更詳細地解釋here

然後在瀏覽器中導航到http://localhost:3000/index.html以查看結果。