向Redis服务器发送数据的函数发送数据,但不会发送成功响应

Function meant to send data to Redis server sends the data, but will not send success response

我的 setJWT 函数将 key/value 对发送到我的本地 Redis 服务器。我已经确认数据是使用 redis-cli 工具设置的。但是,console.log("setJWT success") 和 res.json(response);在函数中没有被触发。

知道我做错了什么吗?

const redis = require('redis');
const client = redis.createClient(process.env.REDIS_URL);

client.connect();

client.on('connect', () => {
    console.log('connected');
});

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

有很多地方看起来不正确,首先你引用了变量 res,但它在你的代码中不存在,也没有必要把所有东西都包装在一个承诺中,你可以使用一个 async/await 函数,在你 resolve 或 reject a promise 之后代码完成,因此永远不会执行 res.json 代码,因为 promise 在该行代码之前完成,在这个 link你可以看到更详细的redis的例子。

这是函数的新版本:

  const setJWT = (key, value) => {
  try {
    client.set(key, value);
    console.log("setJWT success");
  } catch (error) {
    console.log(error);
  }
};