Mysql 为什么';这段代码不返回json数据吗?
我正在尝试使用Node.js和MySQL从数据库中获取数据 以下是我正在尝试的: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
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)
时,它工作正常。为什么会这样?有什么想法吗?