我正在学习Node。
使用Express和Node-Mysql,我成功地能够查询我的mysql数据库并将结果作为JSON返回给客户端。
然而,它太慢了。对于LIMIT为100的简单查询,需要大约6秒才能得到响应。
根据我的记录器,数据库查询只需要大约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 :(得分:0)
我不熟悉游泳池,不幸的是我还不能发表评论。我注意到的一件事是你用两个参数调用db.do
,而它需要三个。当你尝试回调时,这应该引发'undefined is not a function'。