1

我正在学习节点。

使用 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 );
    });
};

D B:

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 );
        });
    });
};

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

在此先感谢您的帮助。

4

1 回答 1

0

我对游泳池不熟悉,不幸的是我还不能发表评论。我注意到的一件事是你db.do用两个参数调用,而它需要三个参数。当您尝试回调时,这应该引发“未定义不是函数”。

于 2013-02-06T22:14:13.520 回答