1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-06 02:15:48 +03:00

override select method to store selected db in client instance and restore selected db on connect

This commit is contained in:
Jean-Hugues Pinson
2011-10-20 10:01:47 +02:00
parent 3e95c55a03
commit 074555396b

View File

@@ -47,7 +47,8 @@ function RedisClient(stream, options) {
this.server_info = {};
this.auth_pass = null;
this.parser_module = null;
this.selected_db = null; // save the selected db here, used when reconnecting
var self = this;
this.stream.on("connect", function () {
@@ -139,7 +140,12 @@ RedisClient.prototype.do_auth = function () {
self.auth_callback(err, res);
self.auth_callback = null;
}
// restore the selected db if needed
if (this.selected_db !== null) {
this.send_command('select', [this.selected_db]);
}
// now we are really connected
self.emit("connect");
if (self.options.no_ready_check) {
@@ -174,6 +180,12 @@ RedisClient.prototype.on_connect = function () {
if (this.auth_pass) {
this.do_auth();
} else {
// restore the selected db if needed
if (this.selected_db !== null) {
this.send_command('select', [this.selected_db]);
}
this.emit("connect");
if (this.options.no_ready_check) {
@@ -682,6 +694,24 @@ commands.forEach(function (command) {
Multi.prototype[command.toUpperCase()] = Multi.prototype[command];
});
// store db in this.select_db to restore it on reconnect
RedisClient.prototype.select = function (db, callback) {
var self = this;
this.send_command('select', [db], function (err, res) {
if (err === null) {
self.selected_db = db;
}
if (typeof(callback) !== 'undefined') {
callback(err, res);
}
});
}
RedisClient.prototype.SELECT = RedisClient.prototype.select;
// Stash auth for connect and reconnect. Send immediately if already connected.
RedisClient.prototype.auth = function () {
var args = to_array(arguments);