我一直让客户端关闭操作
我检查了文档,并添加了“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,
};
当我尝试等待方法时,这是同样的问题
.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);
希望这有帮助,祝你好运!