在node里面引入了redis,用于缓存token。其中用到了redis.get([键名])
方法时,发现这个方法的返回值是boolean
类型的,取到键值时返回的是true
,但是我想要的是返回键值并把它赋值给一个变量。以下是我实现的相关代码:
const config = {
host: '127.0.0.1',
port: '6379',
password: '123456',
};
// 客户端
const RedisClient = redis.createClient(config);
/**
* 获取键值同步返回
* @param key
* @returns {Promise<any>}
*/
RedisClient.synGet = async(key) => {
const newGet = async(key) => {
let val = await new Promise((resolve => {
RedisClient.get(key, function (err, res) {
return resolve(res);
});
}));
return JSON.parse(val);
};
return await newGet(key);
};
module.exports = RedisClient;
const RedisClient = require('../utils/RedisUtil');
const TOKEN = {
/**
* 保存在redis里面的token键名
* @type {string}
*/
NAME: 'VIP_WX_ACCESS_TOKEN',
/**
* access_token有效期,默认两个小时
* @type {number}
*/
EXPIRY_DATE : 60 * 60 * 2 * 1000,
};
function TokenService() {
}
/**
* 获取有效的access_token,附于所有微信接口请求
* @returns {Promise<any>}
*/
TokenService.getAccessToken = async () => {
// 从redis同步获取键值并赋值
let token = await RedisClient.synGet(TOKEN.NAME);
console.log(token);
return token;
};
module.exports = TokenService;