1
我想使用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已啓動。
嘗試將它簡化爲'app.get('/ book',function(req,res){res.json({Books:'No books found'})})'看看是否可行確保'app.get'正如你認爲的那樣工作。同時檢查你的錯誤日誌,可能是SQL查詢中有一個例外,就像沒有'book'表一樣。 – Schwern
好的,我會嘗試。是否可以在此JS文件中編寫服務器代碼,並且同時Apache服務器已啓動?其次,我沒有在'response.end()'裏面寫下任何內容。 –
鄧諾。取決於Apache是如何配置它是否會重新加載更改的Javascript文件。不能傷害重新啓動Apache。只需提供基本的調試建議:將其剝離並從此建立備份。 – Schwern