1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-07 13:22:56 +03:00

handling of errors on multi, now returns 'err' array type

This commit is contained in:
Thanasis Polychronakis
2013-04-18 22:25:58 +03:00
parent c7633bf738
commit ed57dcd9d5
2 changed files with 14 additions and 9 deletions

View File

@@ -1011,7 +1011,7 @@ Multi.prototype.HMSET = Multi.prototype.hmset;
Multi.prototype.exec = function (callback) {
var self = this;
var errors = [];
// drain queue, callback will catch "QUEUED" or error
// TODO - get rid of all of these anonymous functions which are elegant but slow
this.queue.forEach(function (args, index) {
@@ -1037,12 +1037,7 @@ Multi.prototype.exec = function (callback) {
if (typeof cur[cur.length - 1] === "function") {
cur[cur.length - 1](err);
} else {
if (callback) {
callback(new Error(err));
return;
} else {
throw new Error(err);
}
errors.push(new Error(err));
}
self.queue.splice(index, 1);
}
@@ -1053,7 +1048,8 @@ Multi.prototype.exec = function (callback) {
return this._client.send_command("EXEC", [], function (err, replies) {
if (err) {
if (callback) {
callback(new Error(err));
errors.push(new Error(err));
callback(errors);
return;
} else {
throw new Error(err);

View File

@@ -320,6 +320,15 @@ tests.MULTI_7 = function () {
next(name);
};
tests.MULTI_EXCEPTION_1 = function() {
client.multi().set("foo").exec(function (err, reply) {
/* ... */
console.log('CB:', arguments);
});
// [Error: Error: ERR wrong number of arguments for 'set' command]
};
tests.FWD_ERRORS_1 = function () {
var name = "FWD_ERRORS_1";