我正在尝试使用 Node 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这证明了我试图实现的目标是 route 的多个结果。
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 + '/');
最佳答案
如果我理解您的问题正确,您想在调用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 + '/');
关于mysql - 使用express显示node mysql结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39450017/