Node-Mysql数据库查询+ res.json太慢了

时间:2013-02-06 20:20:59

标签: javascript node.js node-mysql

我正在学习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 );
        });
    });
};

有谁知道我可能做错了什么/为什么花了这么长时间才将结果集发送给客户端?

先谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我不熟悉游泳池,不幸的是我还不能发表评论。我注意到的一件事是你用两个参数调用db.do,而它需要三个。当你尝试回调时,这应该引发'undefined is not a function'。