Rumah  >  Soal Jawab  >  teks badan

Cuba untuk menyambung kepada klien redis daripada perisian tengah nuxt 3 tetapi sambungan tidak ditentukan

<p>Saya cuba menyambung ke pelayan Redis untuk mendapatkan data sesi daripada nuxt 3 DefineNuxtRouteMiddleware middleware tanpa kejayaan. Saya mencipta sambungan ke redis dalam pemalam sisi pelayan dan ia berfungsi untuk semua titik akhir api saya, tetapi ia nampaknya tidak berfungsi untuk perisian tengah penghalang-penghalang saya. Saya cuba mendapatkan sambungan dalam kod di bawah tetapi sambungan tidak ditentukan. Adakah saya salah dalam mengandaikan bahawa pelaksanaan sisi pelayan middleware harus mempunyai akses kepada sambungan Redis</p> <pre class="brush:php;toolbar:false;">if (process.server) { biarkan sesi = menunggu RedisUtil.getConnection.get(sessionID); }</pre> <p>Berikut ialah redisUtil</p> <pre class="brush:php;toolbar:false;">class RedisUtil{ statik dapatkan getConnection(){ kembalikan ini.sambungan; } set statik setConnection(connection){ ini.sambungan = sambungan; } sambung tak segerak statik(konfigurasi) { biarkan 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)); tunggu redis.connect(); RedisUtil.setConnection = redis; console.log("Disambungkan ke redis"); } }</pre> <p>pemalam redis dimuatkan ke dalam konfigurasi nitro</p> <pre class="brush:php;toolbar:false;">import RedisUtil daripada '../utils/RedisUtil'; import konfigurasi daripada "~/server.config" eksport async lalai (NuxtApp) => tunggu RedisUtil.connect(config); };</pre> <pre class="brush:php;toolbar:false;">nitro: { pemalam: [ "~/server/plugins/redis.js" ], },</pre> <p>Seperti yang dinyatakan di atas, saya boleh mengakses sambungan redis dalam semua pelaksanaan sebelah pelayan lain, tetapi tidak dalam perisian tengah. Sebarang bantuan mengenai perkara ini amat dihargai. </p>
P粉512526720P粉512526720436 hari yang lalu594

membalas semua(1)saya akan balas

  • P粉098979048

    P粉0989790482023-08-31 12:43:49

    Nampaknya anda hanya menjalankan permintaan Redis pada bahagian sisi pelayan. Menyebabkan penghalaan pihak klien kehilangan konteks apabila ia berlaku.

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

    balas
    0
  • Batalbalas