node.js - 使用 Redis 异步等待函数存储 token 不起作用。 async await 是否适用于 Redis?

标签 node.js redis

我正在尝试使用 Redis 存储 token 并在存在时检索它。如果没有,调用服务器获取 token :

async function sendData (req, data, cb) {

let synchronyToken = await hb.redis.client.getAsync('synchronyToken-' + config.getEnv());

 if(synchronyToken === null) {
    await request({
        'method': authOptions.method,
        'url': authOptions.url,
        'proxy': authOptions.proxy,
        'body': authOptions.body,
        'headers': authOptions.headers
      }, (error, response, body) => {
        console.log(response);
        synchronyToken = response.access_token;
        hb.redis.client.set('synchronyToken-' + config.getEnv(), synchronyToken, {ttl: 3600});
      })
    }
}

await 不能在 Redis 上工作吗?

我在以下方面遇到错误:

let synchronyToken = await hb.redis.client.getAsync('synchronyToken-' + config.getEnv());

我担心如果我只是使用

let synchronyToken = hb.redis.client.getAsync('synchronyToken-' + config.getEnv());

我的代码将继续运行并检查同步 token ,而无需等待 Redis 回复。

最佳答案

假设您使用 node_redis 库,没有 client.getAsync 这样的函数,除非您像这样使用 promisify 定义它:

const {promisify} = require('util');
const getAsync = promisify(client.get).bind(client);

您还可以查看开箱即用的支持 async/await 的 ioredis 库:

https://github.com/luin/ioredis

关于node.js - 使用 Redis 异步等待函数存储 token 不起作用。 async await 是否适用于 Redis?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51489944/

相关文章:

node.js - 直接在应用程序(webpack)的入口点导入文件加载器。感叹号是什么?

redis - Redis架构概述?

go - 从 redis 中获取所有 key

javascript - Angular 通用 - 语法错误 : Unexpected token import

node.js - 哪个最有效 : serving static files directly by nginx or by node via nginx reverse proxy?

node.js - Nodejs Express sendStatus 错误

javascript - MongoDB with Mongoose - 选择指定日期范围丢弃时间

django - NOAUTH 需要身份验证。 docker compose for django 上的 Redis 设置

c - C中结构属性的 "dot"定义是什么

java - Redis Cluster中如何使用Redisson上传字节数组?