繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM