向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);
}
};
我的 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);
}
};