Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从redis获取值_Javascript_Node.js_Caching_Redis - Fatal编程技术网

Javascript 无法从redis获取值

Javascript 无法从redis获取值,javascript,node.js,caching,redis,Javascript,Node.js,Caching,Redis,我正在尝试从redis获取一个我已经设置的值。当我调用checkCache函数时,我得到“CACHE:null”,然后它记录“无错误+数据”。我不明白为什么,因为我用等待 const redis = require("redis"); const client = redis.createClient({ port : procces.env.PORT, host : procces.env.HOST, password : procces.

我正在尝试从redis获取一个我已经设置的值。当我调用checkCache函数时,我得到“CACHE:null”,然后它记录“无错误+数据”。我不明白为什么,因为我用等待

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
};

模块
redis
不支持承诺

为此,你必须承诺

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


我尝试了这个方法,但它仍然返回null,然后返回“无错误+数据”@r10lomo这是返回键的值。我已经试过上面的代码了。它是否像其他软件包一样不需要蓝鸟?我尝试了redisio,但无法编辑:很抱歉,我一开始没有看到getAsync。@r10lomo如果您不想使用bluebird,可以使用
promisifyAll=require('util-promisifyAll')
来promisify all
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;
};