尝试从 nuxt 3 中间件连接到 redis 客户端,但连接未定义
P粉512526720
P粉512526720 2023-08-30 13:36:47
0
1
650
<p>我正在尝试连接到 Redis 服务器以从 nuxt 3 DefineNuxtRouteMiddleware 中间件获取会话数据,但没有成功。我在服务器端插件中创建了与 redis 的连接,它适用于我的所有 api 端点,但它似乎不适用于我的 rout-guards 中间件。我尝试在下面的代码中获取连接,但连接未定义。我是否错误地假设中间件服务器端执行应该有权访问 Redis 连接</p> <pre class="brush:php;toolbar:false;">if (process.server) { let session = await RedisUtil.getConnection.get(sessionID); }</pre> <p>下面是redisUtil</p> <pre class="brush:php;toolbar:false;">class RedisUtil{ static get getConnection(){ return this.connection; } static set setConnection(connection){ this.connection = connection; } static async connect(config) { let redis = createClient({ url: 'redis://' + config.redis.user + ':' + config.redis.password + '@' + config.redis.host + ':' + config.redis.port }); redis.on('error', err => console.log('Redis Client Error', err)); await redis.connect(); RedisUtil.setConnection = redis; console.log("Connected to redis"); } }</pre> <p>redis插件已加载到硝基配置中</p> <pre class="brush:php;toolbar:false;">import RedisUtil from '../utils/RedisUtil'; import config from "~/server.config" export default async (NuxtApp) => { await RedisUtil.connect(config); };</pre> <pre class="brush:php;toolbar:false;">nitro: { plugins: [ "~/server/plugins/redis.js" ], },</pre> <p>如上所述,我可以在所有其他服务器端执行中访问redis连接,但不能在中间件中访问。对此的任何帮助将不胜感激。</p>
P粉512526720
P粉512526720

全部回复(1)
P粉098979048

看来您只在服务器端部分运行 Redis 请求。当客户端路由发生时使其失去上下文。

export default defineNuxtRouteMiddleware(async (to, from) => {
  let session = '';
  if (process.server) {
    session = 'has some context';
  }

  // server: session = 'has some context'
  // client: session = ''
})
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板