redis.js get 返回 true 而不是值

redis.js get is returning true instead of the value

我正在尝试 return 盐值对我的函数的影响,但我得到的都是真的。

function getUserSalt(client, username) {

    let salt = client.HGET(username, "salt", function (error, result){
        if(error) throw error;

        return result;
    })

    return salt;
}

您使用的回调不正确。

function getUserSalt(client, username, callback) {

return client.HGET(username, "salt", callback);

}

现在,这可以与回调一起使用,它将接收错误作为第一个参数,盐作为第二个参数。

或者,您可以按照此处所述使用承诺:https://github.com/NodeRedis/node_redis#promises

示例为:

const {promisify} = require('util');
const getUserSaltAsync = promisify(getUserSalt);

getUserSaltAsync(client, "some_username").then(salt => {console.log(salt);});

当然,您还需要以某种方式处理来自 promise 的错误。

import redisClient from "../config/redisConfig";
import util from "util";
let hgetall = util.promisify(redisClient.hgetall).bind(redisClient);

await hgetall("key") // This way you will be getting the value instead of true