[英]Why doesn't this code return json data?
我正在尝试使用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已启动。
我相信,问题在于您使用的是两个不同且冗余的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');
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.