NodeJS Redis客户端返回错误值

4
我正在使用 Node Redis 作为 NodeJS Redis 客户端,并调用 SISMEMBER Redis 命令。但是,无论该值是否为集合的成员,当我调用命令时它总是返回 true。
我与 Node IRC 模块一起使用。我不知道为什么 Redis 调用会返回错误的值。我尝试隔离只有 Redis 代码(没有周围的代码),它可以正常工作。请看下面的代码,谢谢您的帮助。 以下代码不起作用
var redis = require("redis");
var redisClient = redis.createClient();

ircClient.addListener('join', function(channel, who) {
    console.log(redisClient.sismember('visitedUsers', 'awdwf'));
    console.log(who + ' connected');
});

这个可以工作,然而

var redis = require("redis");
var redisClient = redis.createClient();

console.log(redisClient.sismember('visitedUsers', 'awdwf'));

我怀疑你所说的上述代码是否能在测试不存在的用户时正常工作,这种情况下它应该返回0。 - Hanu
1个回答

5
redis方法都是异步的。 返回值只是布尔值,表示当前是否需要发出更多命令(取决于命令队列大小是否超过高水位标记 -- 这类似于node的stream.write()返回false)。

您可以尝试以下示例:

client.sismember('visitedUsers', 'awdwf', function(err, reply) {
  if (err) throw err;
  console.log(reply);
});

非常感谢!我不知道它们是异步的。 - AlienHoboken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接