From 78d8f9ef9c1852c0801394bf5a38ab7264c5ea5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=A7=E9=A3=8E?= Date: Sun, 17 Mar 2013 18:05:39 +0800 Subject: [PATCH] need not send message to server when set undefined value --- index.js | 8 ++++++++ test.js | 2 ++ 2 files changed, 10 insertions(+) diff --git a/index.js b/index.js index 22051bf5e9..6231c8deb0 100644 --- a/index.js +++ b/index.js @@ -694,6 +694,14 @@ RedisClient.prototype.send_command = function (command, args, callback) { args = args.slice(0, -1).concat(args[args.length - 1]); } + // if the value is undefined or null and command is set or setx, need not to send message to redis + if (command === 'set' || command === 'setex') { + if(args[args.length - 1] === undefined || args[args.length - 1] === null) { + var err = new Error('send_command: ' + command + ' value must not be undefined or null'); + return callback(err); + } + } + buffer_args = false; for (i = 0, il = args.length, arg; i < il; i += 1) { if (Buffer.isBuffer(args[i])) { diff --git a/test.js b/test.js index 526d005c44..a00d7fe88b 100644 --- a/test.js +++ b/test.js @@ -1109,6 +1109,7 @@ tests.SET = function () { var name = "SET"; client.SET(["set key", "set val"], require_string("OK", name)); client.get(["set key"], last(name, require_string("set val", name))); + client.SET(["set key", undefined], require_error(name)); }; tests.GETSET = function () { @@ -1161,6 +1162,7 @@ tests.SETEX = function () { client.SETEX(["setex key", "100", "setex val"], require_string("OK", name)); client.exists(["setex key"], require_number(1, name)); client.ttl(["setex key"], last(name, require_number_pos(name))); + client.SETEX(["setex key", "100", undefined], require_error(name)); }; tests.MSETNX = function () {