我正在尝试使用Node.js和MySQL从数据库中获取数据。
以下是我正在尝试的内容:
var app=require('express')();
var bodyParser=require("body-parser");
var mysql=require('mysql');
var http=require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end();
}).listen(8081);
console.log('Server running at http://127.0.0.1:8081/');
var connection=mysql.createConnection({
host: 'localhost',
user: 'root',
password: "",
database: 'books'
});
connection.connect(function(err) {
if ( !err ) {
console.log("Connected to MySQL");
} else if ( err ) {
console.log(err);
}
});
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.get('/book', function(req, res){
var data={
'error': 1,
'Books': ""
};
connection.query("SELECT * FROM book", function(err, rows, fields){
if(rows.length!=0){
data['error']=0;
data['Books']=rows;
res.json(data);
}else{
data['Books']='No books found';
res.json(data);
}
});
});
当我执行node server.js
时,它会在cmd中显示以下输出:
服务器在http://127.0.0.1:8081/运行 连接到MySQL
但是当我访问http://127.0.0.1:8081/book时,它不会显示任何输出。
注意:我的XAMPP Apache服务器和MySQL已启动。
答案 0 :(得分:0)
我认为,问题在于您使用的是两个不同且冗余的Web服务器。一个是http
,另一个是app
(即Express)。只有http
实际上正在侦听端口8081。
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end();
}).listen(8081);
由于所有这一切都是写text/plain
标题并退出,无论您尝试访问哪条路径,都会得到一个空白页。
另一个,app
,从不侦听端口。所以app
代码都设置了一个无法访问的服务器。
因此删除所有http
内容,您不需要它。 Express为您处理此事。然后拨打app.listen(8081)
。
var app = require('express')();
var bodyParser = require("body-parser");
var mysql = require('mysql');
var connection=mysql.createConnection({
host: 'localhost',
user: 'root',
password: "",
database: 'books'
});
connection.connect(function(err) {
if ( !err ) {
console.log("Connected to MySQL");
} else if ( err ) {
console.log(err);
}
});
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.get('/book', function(req, res){
var data={
'error': 1,
'Books': ""
};
connection.query("SELECT * FROM book", function(err, rows, fields){
if(rows.length!=0){
data['error']=0;
data['Books']=rows;
res.json(data);
}else{
data['Books']='No books found';
res.json(data);
}
});
});
app.listen(8081, function () {
console.log('Server running on port 8081');
});