Я пишу RESTful API в машинописном тексте и пытаюсь использовать уже проанализированные данные, которые хранятся в Redis, с определенным ключом в другой функции. Проблема, с которой я сталкиваюсь, заключается в том, что вместо получения фактических данных от Redis я просто продолжаю получать логическое значение true Я много пробовал гуглить и читать документацию redis, к сожалению, безрезультатно. Кто-нибудь здесь сейчас, как я могу получить доступ к фактическим данным, чтобы я мог использовать их в другой функции? Я подозреваю, что сталкиваюсь здесь с какими-то асинхронными проблемами, но я не совсем уверен.
Например, если я попытаюсь связать ответ с переменной, это произойдет:
const key = something
const reply = client.mget(key);
console.log("This is the reply: " + reply);
This is the reply: true
Br,
Victor
РЕДАКТИРОВАТЬ:
Таким образом, в основном я отправляю данные из https.get в обработчик объекта, который анализирует данные в моей предпочтительной форме, а затем я преобразую этот объект в строку и отправляю его в redis в виде строки, которая выглядит следующим образом:
client.set(redisInfo, JSON.stringify(objecthandler(newdata)));
Мой настоящий код для получения данных на данный момент выглядит следующим образом:
const getRedis = (rediskey: string, success: any, error: any) => {
client.mget(rediskey, function (err: Error, reply: any) {
if (!err) {
success(reply);
}
else {
error(err);
}
});
};
//My callback function that I'm trying to get to work so I can use the redis data in other functions
function getrediscallback(key: string) {
getRedis(key, function success(reply: string): string {
//This console.log actually returns the data that I want
console.log("this is the reply: " + reply);
return reply;
},
function error(err: Error) {
console.log("Something went wrong" + err);
});
}
Поэтому, когда я использую обратный вызов в другой функции, он будет выглядеть примерно так:
const redisdata = getrediscallback("getCars");
//This gives me the value of undefined
console.log(redisdata)
Это означает, что функция обратного вызова фактически получает фактические данные, но это никогда не достигается позже, когда я использую функцию обратного вызова в другой функции.