2016-08-12 2 views
0

Derzeit versucht, einen anderen Ansatz zum Verbinden mit meiner Datenbank mit Versprechen und Pooling zu implementieren. Das ist, was ich als der Moment haben:Bluebird, node-mysql, pooling und disposing

// 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; 

Dann benutze ich die Abfrage wie folgt aus:

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

ich this Bibliothek bin mit der node-mysql ist nur mit Bluebird Versprechen eingewickelt. Damit wollte ich die Fähigkeiten von BlueBird disposing und using nutzen, so dass ich nur mit der DB verbunden werden würde, wenn ich es sein musste.

Zur Zeit bekomme ich einen Fehler von Connection.js von mysql: cb is not a function. Basierend auf this Frage habe ich etwas Ahnung von dem, was ich falsch mache, aber ich bin mir nicht sicher, wie ich das mit BlueBirds Dispose/Using Paradigma verwenden würde. Vielen Dank im Voraus für alle, die helfen können!

+0

In Ihrem 'sqlQuery.js'-Code rufen Sie' getSqlConnection() 'auf - ohne das Argument' cb' (Callback?) Zu übergeben. Wofür wird dieses 'cb' verwendet? – ishmaelMakitla

+0

Entschuldigung. Ich habe diesen Code von meiner geänderten Quelle kopiert. Was da oben ist, sollte jetzt das Original sein. Ich verwende keinen Rückruf in meinem Code. Es wird auch nicht erwähnt, dass man in der 'node-mysql'-Dokumentation eine – wootencl

+0

benötigt. OK, jetzt, da du' cb' dort nicht mehr hast - bekommst du immer noch dieselbe Fehlermeldung? – ishmaelMakitla

Antwort

0

Riesiger Mangel an Aufsicht meinerseits. Die folgende Zeile:

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

sollte sein:

return pool.getConnection().disposer...

Tut mir leid. Immer noch ein Fehler für connection.release nicht eine Funktion, die seltsam ist, aber zumindest kann ich weiter mit dem Debuggen das.

+0

Nur zur Bestätigung - also sagst du, dass auch das nicht geholfen hat? – ishmaelMakitla

+0

Es hat geholfen. Ich erhalte jetzt einen anderen Fehler. Suchen Sie nach einer möglichen Lösung im Moment – wootencl

+0

Versuchen Sie, von 'getConnection()' zu wechseln ... und verwenden Sie stattdessen 'getConnectionAsync(). Disporer ...', sehen Sie, ob dies hilft, den Fehler zu beheben. – ishmaelMakitla