コールバックで提供されるpg.connect
内部メソッドとともに、node-postgres のメソッドを約束したいと思います。connection.query
後者はできますが.promisify
、最初のものは手動で実装する必要があります (ここで何か不足している場合は説明してください)。
問題は、このコードが正しいかどうか、または改善する必要があるかどうかわかりません。コードは機能しています。Bluebird を意図したとおりに使用しているかどうかを知りたいだけです。
// aliases
var asPromise = Promise.promisify;
// save reference to original method
var connect = pg.connect.bind(pg);
// promisify method
pg.connect = function (data) {
var deferred = Promise.defer();
connect(data, function promisify(err, connection, release) {
if (err) return deferred.reject(err);
// promisify query factory
connection.query = asPromise(connection.query, connection);
// resolve promised connection
deferred.resolve([connection,release]);
});
return deferred.promise;
};