为什么这段代码不返回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

回到顶部