无法从redis获取值

xkftehaa  于 2021-06-08  发布在  Redis
关注(0)|答案(1)|浏览(418)

我试图从redis得到一个我已经设置好的值。当我调用checkcache函数时,我得到“cache:null”,然后它记录“no error+the data”。我不明白为什么,因为我用等待。

const redis = require("redis");
const client = redis.createClient({
  port      : procces.env.PORT,
  host      : procces.env.HOST,
  password  : procces.env.PASSWORD,
});

const checkCache = async (key) => {
  await client.get(key, (err, data) => {
    if(err) throw err;
    console.log("NO ERROR + " + data);
    if(data !== null) { return JSON.parse(data); }
  });
  return null;
};

我这样称呼方法:

const findAll = async(user) => {
  const cache = await checkCache(user);
  console.log('CACHE: ' + cache);  // returns null
};
kfgdxczn

kfgdxczn1#

模块 redis 不支持承诺。
为此你必须承诺

const Promise = require('bluebird');
const redis = Promise.promisifyAll(require("redis"));

编辑:

const Promise = require('bluebird');
const redis = Promise.promisifyAll(require("redis"));
const client = redis.createClient({
  port      : process.env.PORT,
  host      : process.env.HOST,
  password  : process.env.PASSWORD,
});

const checkCache = async (key) => {
  const data = await client.getAsync(key);
    console.log("NO ERROR + " + data);
    if(data !== null) { return JSON.parse(data); }
  return null;
};

相关问题