客户端已关闭

问题描述 投票:0回答:1

我一直让客户端关闭操作

我检查了文档,并添加了“client.connect()”,错误没有显示,但我的 api 响应没有通过,我询问了 gpt,根据它,我添加的行就是问题所在。



const client = redis.createClient();
client.connect();

client.on("error", function (error) {
  console.error(error);
});



const setJWT = (key, value) => {
  console.log(typeof key,typeof value)
  return new Promise((resolve, reject) => {
    try {
      return client.set(key, value, (err, res) => {
        if (err) reject(err);
        resolve(res);
      });
    } catch (error) {
      reject(error);
    }
  });
};

const getJWT = (key) => {
  return new Promise((resolve, reject) => {
    try {
      client.get(key, (err, res) => {
        if (err) reject(err);
        resolve(res);
      });
    } catch (error) {
      reject(error);
    }
  });  
};  

const deleteJWT = (key) => {  
  try {  
    client.del(key);  
  } catch (error) {  
    console.log(error);  
  }  
};  
module.exports = {  
  setJWT,  
  getJWT,  
  deleteJWT,  
};  

当我尝试等待方法时,这是同样的问题

npm redis
1个回答
0
投票

.connect
方法也是异步的。所以,你需要在那里放一个
await
。此外,这些调用的顺序是错误的,您需要首先设置事件处理程序:

const client = redis.createClient();
await client.connect();

client.on("error", function (error) {
  console.error(error);
});

并且在调用 Redis 命令时需要使用

await
而不是回调。这些回调适用于旧版本的 Node Redis,虽然它们具有“技术支持”,但它们是用于支持旧代码,而不是用于新开发。而且,坦率地说,这不是 Node Redis(或 JavaScript)的发展方向: const result = await client.get(key);

希望这有帮助,祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.