2016-08-12 9 views
0

現在、約束とプールを使用してデータベースに接続するための別のアプローチを実装しようとしています。これは私が今のよう持っているものです。Bluebird、node-mysql、プーリング、および廃棄

// databaseConnection.js 
var configDB = require('./database.js'); 
var mysql = require('promise-mysql'); 

var pool = mysql.createPool(configDB.connectionData); 

function getSqlConnection() { 
    return pool.getConnection(configDB.connectionData).disposer(function(connection) { 
     connection.release(); 
    }); 
} 

module.exports = getSqlConnection; 

は、その後、私はこのようなクエリを使用します。

#sqlQuery.js 
var Promise = require("bluebird"); 
var getSqlConnection = require('./databaseConnection') 
Promise.using(getSqlConnection(), function(connection) { 
    return connection.query("SELECT * FROM EXAMPLE_TABLE").then(function(row) { 
     return process(rows); 
    } 
} 

私はちょうどnode-mysqlブルーバード約束でラップされthisライブラリを使用しています。それで、BlueBirdのdisposingusing機能を利用したいので、私が必要としていたときだけDBに接続します。

現在、私はConnection.jsからmysqlのエラー:cb is not a functionを取得していますが、 this質問に基づいて私は間違っていることを考えていますが、私はBlueBirdのdispose/usingパラダイムでどのように使用するのかは分かりません。助けることができる誰のためにも事前に感謝します!

+0

'sqlQuery.js'コードでは' cb'(コールバック?)引数を渡さずに 'getSqlConnection()'を呼び出しています。この 'cb'は何のために使われていますか? – ishmaelMakitla

+0

申し訳ありません。修正されたソースからそのコードをコピーしました。何が今そこにあるのはオリジナルでなければならない。私は自分のコードでコールバックを使用しません。また、 'node-mysql'のマニュアルで要求することも言及していません。 – wootencl

+0

もう' cb'がないので、今でも同じエラーメッセージが表示されていますか? – ishmaelMakitla

答えて

0

私の一部には徹底的な見落としがありません。次の行:

return pool.getConnection(configDB.connectionData).disposer...

は次のようになります。そのことについて

return pool.getConnection().disposer...

申し訳ありません。 connection.releaseのエラーがまだ奇妙な機能ではありませんが、少なくとも私はそのデバッグを進めることができます。

+0

ちょうど確認する - これは助けにもならなかったと言う? – ishmaelMakitla

+0

それは助けてくれました。もうちょっと違うエラーになりました。可能な修正を現時点で調べてください。 – wootencl

+0

'getConnection()' ...から変更して、 'getConnectionAsync()。disposer ...'を使って、エラーをクリアするのに役立つかどうか確認してください。 – ishmaelMakitla

関連する問題