为什么这段代码不返回json数据?
我想使用Node.js和MySQL从数据库中获取数据。为什么这段代码不返回json数据?
这里就是我想:
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');
});
以上是 为什么这段代码不返回json数据? 的全部内容, 来源链接: utcz.com/qa/263941.html