为什么这段代码不返回json数据?

时间:2016-11-02 05:31:54

标签: mysql node.js

我正在尝试使用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已启动。

1 个答案:

答案 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');
});