嘗試從 nuxt 3 中間件​​連接到 redis 用戶端,但連線未定義
P粉512526720
P粉512526720 2023-08-30 13:36:47
0
1
647
<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 = ''
})
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板