3

私は Express を初めて使用し、Express + Node-Mysql に頭を悩ませようとしています。

http リクエストごとに新しい mysql 接続を使用したいと考えています。

ここに私のapp.jsファイルがあります:

var express = require( "express" ),
    mysql = require( "mysql" ),
    routes = require( "./routes" );

var app = module.exports = express(),
    db = mysql.createConnection( require( "./config/db" ) );

app.configure(function(){
    app.set( "views", __dirname + "/views" );
    app.set( "view engine", "jade" );
    app.set( "db", db );
    app.use( express.logger( "dev" ));
    app.use( express.bodyParser() );
    app.use( app.router );
    app.use( express.static( "front" ));
});

app.configure( "development", function(){
    app.use( express.errorHandler() );
});

routes( app );

app.listen(80);

次に、ルート ファイルで、次のようなことを行います。

module.exports = function( app ){

    var db = app.get( "db" );

    app.get( "/stuff", function( req, res ){

        db.connect( function(err){

            var sql = "SELECT * FROM stuff";

            db.query( sql, function( err, result ){

                res.send( result );
                db.end(function( err ){ });

            });

        });

    });

};

これは機能しますが、「適切」かどうかはわかりません。私が求めていることを達成するためのよりクリーンな方法はありますか?

(事前に)ご協力いただきありがとうございます。

4

1 に答える 1

3

リクエストごとに1つのdb接続を実行する場合は、次の行を入力します。

db = mysql.createConnection(require( "./config/db" ));

リクエストハンドラー内(例:routes.js内)、実行する直前db.connect()db.end()クエリからすべての結果を取得したら、電話をかけます。

ただし、データベースへの接続は比較的コストのかかる操作であるため、接続プールの使用を検討することをお勧めします。いくつかの接続を開いたままにし、必要なときにプールから空き接続を引き出すと、リクエストごとに新しい接続を開いたり閉じたりするよりも効率的です。generic- poolnpmモジュールは良いものです。

于 2013-01-31T23:14:55.653 に答える