2016-09-12 44 views
0

我想顯示多行使用節點mysql,我堅持要獲得結果到路線。顯示節點mysql結果使用快遞

看下我的代碼,我可以控制路線外的所有結果,但它只會在路線中控制1個結果。

var port = process.env.PORT || 3000, 
express = require('express'), 
app = express(); 

app.set('view engine', 'ejs'); 

var mysql = require('mysql'); 
var connection = mysql.createConnection({ 
    host: 'blablabla.com', 
    user: 'user', 
    password: 'password', 
    database: 'database' 
}); 

connection.connect(function(err) { 
    if (err) { 
     console.error('error connecting: ' + err.stack); 
     return; 
    } 
    console.log('connected as id ' + connection.threadId); 
}); 

/// start query 
var query = connection.query('SELECT * FROM table LIMIT 3'); 
query 
    .on('error', function(err) { 
     console.log(err); 
    }) 
    .on('result', function(row) { 

     console.log(row); /// displays all 3 results 

     app.get('/', function(req, res) { 
      res.send(row); /// displays only 1 result 
      console.log(row); /// displays only 1 result 
     }); 
    }); 


/// end query 
connection.end(); 
app.listen(port); 
console.log('Server running at http://127.0.0.1:' + port + '/'); 

編輯

了大量的研究後,我偶然發現了這個https://youtu.be/g-_l_v_uX6E?t=15m36s這表明什麼,我想實現這是多個結果到路徑。

var port = process.env.PORT || 3000, 
express = require('express'), 
app = express(); 

app.set('view engine', 'ejs'); 

var mysql = require('mysql'); 
var connection = mysql.createConnection({ 
    host  : 'blablabla.com', 
    user  : 'user', 
    password : 'pass', 
    database : 'database' 
}); 

connection.connect(function(err) { 
    if (err) { 
    console.error('error connecting: ' + err.stack); 
    return; 
    } 

    console.log('connected as id ' + connection.threadId); 
}); 

var units = null; 

connection.query('SELECT * FROM table LIMIT 3', function(err, rows, fields){ 
     if(err) throw err; 
     units = rows; 

     connection.end(); 
     app.get('/', function(req, res) { 
     res.send(units); /// multiple results to the browser 
     }); 
}); 

app.listen(port); 
console.log('Server running at http://127.0.0.1:' + port + '/'); 

回答

0

如果我understund你的問題正確,你想,當你調用http://127.0.0.1...讓你的數據庫信息?

如果是這樣,你需要做一些小的修改代碼:

var port = process.env.PORT || 3000, 
express = require('express'), 
app = express(); 

app.set('view engine', 'ejs'); 

var mysql = require('mysql'); 
var connection = mysql.createConnection({ 
    host: 'blablabla.com', 
    user: 'user', 
    password: 'password', 
    database: 'database' 
}); 


function getRows(res){ 
    connection.connect(function(err) { 
     if (err) { 
      console.error('error connecting: ' + err.stack); 
      return; 
     } 
     console.log('connected as id ' + connection.threadId); 

     /// start query 
     var query = connection.query('SELECT * FROM table LIMIT 3'); 
     query 
      .on('error', function(err) { 
       connection.end(); /// end query 
       console.log(err); 
      }) 
      .on('result', function(row) { 

       res.send(row); /// displays only 1 result 
       console.log(row); /// displays only 1 result 
       connection.end(); /// end query 
       console.log(row); /// displays all 3 results 
       return; 
      }); 
    }); 

} 


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

}); 

app.listen(port); 
console.log('Server running at http://127.0.0.1:' + port + '/'); 
+0

你好,謝謝你的快速反應,在app.get路線中的一切都是不確定的?並且代碼會拋出一個'events.js:16 throw er;如果我註釋掉'connection.end();' – Jason

+0

如果你註釋掉'connection.end()'仍然是'undefined',那麼這個錯誤會消失。 –

+0

是的不幸,對不起:) – Jason