Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 为什么';这段代码不返回json数据吗?_Mysql_Node.js - Fatal编程技术网

Mysql 为什么';这段代码不返回json数据吗?

Mysql 为什么';这段代码不返回json数据吗?,mysql,node.js,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

我正在尝试使用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中显示以下输出:

服务器运行于 已连接到MySQL

但当我访问时,它不会显示任何输出


注意:我的XAMPP Apache服务器和MySQL已经启动。

我认为问题在于,您使用的是两个不同的冗余web服务器。一个是
http
,另一个是
app
(即)。只有
http
实际上正在侦听端口8081

http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end();
}).listen(8081);
因为它所做的只是写一个
text/plain
标题并退出,所以无论您尝试访问哪个路径,都会得到一个空白页面

另一个,
app
,从不监听端口。所以所有的
app
code设置了一个无法访问的服务器

因此,删除所有
http
内容,您不需要它。Express为您处理此问题。然后调用
应用程序。收听(8081)


问题是,我相信,您正在使用两个不同的冗余web服务器。一个是
http
,另一个是
app
(即)。只有
http
实际上正在侦听端口8081

http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end();
}).listen(8081);
因为它所做的只是写一个
text/plain
标题并退出,所以无论您尝试访问哪个路径,都会得到一个空白页面

另一个,
app
,从不监听端口。所以所有的
app
code设置了一个无法访问的服务器

因此,删除所有
http
内容,您不需要它。Express为您处理此问题。然后调用
应用程序。收听(8081)


试着把它简化为
app.get('/book',function(req,res){res.json({Books:'No Books found'})})
,看看这是否有效,以确保
app.get
像您认为的那样工作。还要检查错误日志,可能是SQL查询出现异常,例如如果没有
book
表。好的,我会试试。我已经在这个JS文件中编写了服务器代码,同时Apache服务器处于打开状态,这样可以吗?其次,我没有在response.end()中写任何东西,可以吗?不知道。取决于Apache的配置方式,它是否将重新加载已更改的Javascript文件。重启Apache不会有什么坏处。仅提供基本的调试建议:将其剥离并重新构建。不,我减少了它,但仍然没有响应。@Schwern当我替换createServer代码并最终简单地编写了
app.listen(8081)
时,它工作正常。为什么会这样?有什么想法吗?试着把它简化为
app.get('/book',function(req,res){res.json({Books:'No Books found'})})
,看看这是否有效,以确保
app.get
像您认为的那样工作。还要检查错误日志,可能是SQL查询出现异常,例如如果没有
book
表。好的,我会试试。我已经在这个JS文件中编写了服务器代码,同时Apache服务器处于打开状态,这样可以吗?其次,我没有在response.end()中写任何东西,可以吗?不知道。取决于Apache的配置方式,它是否将重新加载已更改的Javascript文件。重启Apache不会有什么坏处。仅提供基本的调试建议:将其剥离并重新构建。不,我减少了它,但仍然没有响应。@Schwern当我替换createServer代码并最终简单地编写了
app.listen(8081)
时,它工作正常。为什么会这样?有什么想法吗?