2013-02-06 39 views
1

我在學Node。Node-Mysql數據庫查詢+ res.json太慢了

使用Express和Node-Mysql,我成功地能夠查詢我的mysql數據庫並將結果作爲JSON返回給客戶端。

但是,它太慢了。對於LIMIT爲100的簡單查詢,需要大約6秒鐘才能得到響應。

根據我的記錄器,DB查詢只需要大約8毫秒的時間來運行 - 所以我不認爲node-mysql是問題所在。

但我唯一做的其他事情是將結果集傳遞給響應對象以轉換成json。

這裏是我的代碼,大致爲:

路線:

app.get("/exercises", function(req, res){ 
    exercises.get(req.query, function(result){ 
     res.json(result); 
    }); 
}); 

型號:

module.exports.get = function(params, cb){ 
    var sql = "SELECT * FROM exercises LIMIT 100"; 
    db.do(sql, function(result){ 
     var response = {}; 
     response.data = result[ 0 ]; 
     response.meta = result[ 1 ][ 0 ]; 
     cb(response); 
    }); 
}; 

DB:

module.exports.do = function(sql, vals, cb){ 
    var selectStart = +new Date(); 
    pool.acquire(function(err, db){ 
     db.query(sql, vals, function(err, result) { 
      cb(result); 
      console.log("Query Execuction: %d ms", +new Date() - selectStart); 
      pool.release(db); 
     }); 
    }); 
}; 

有誰知道我可能做錯了/爲什麼要花費這麼長時間才能將結果集發送到客戶端?

(提前)感謝您的幫助。

回答

0

我不熟悉游泳池,很遺憾我還無法評論。我注意到的一件事是你用兩個參數調用db.do,而它需要三個參數。當你嘗試回調時,這應該會引發'未定義不是函數'。