1

誰かがこれに光を当てることができることを願っています。私は一生、問題が何であるかを見つけることができません。

問題:

hset を使用して 1 つのファイルで Redis に値を追加し、hgetを使用して別のファイルでその値を取得しようとしています。テスト ケースで最終的に発生するのは、値が設定されているにもかかわらず、 hgetが何もなかったかのように null を返すことです。

試み:

同じファイルに値を設定した直後に値を取得しようとすると、本当に奇妙な部分が発生します。実際は普通に使えます!これをチェックしてください...

// FYI: This is co-mocha so the generator function is okay
describe('Route', () => {
  it('should return the value currently set in Redis', function* () {
    const link = 'this-is-a-link';
    yield redis.hset('i:metadata', 'stream', link); // using ioredis
    const response = yield request.send(); // requests to my Koa server
    expect(response.body.stream).to.equal(link); // expected null to equal 'this-is-a-link'
  });
});

ルートが単純であることがわかります...

// FYI: This is a Koa route reference with a HTTP GET on '/'
exports.get = function* () {
  const stream = yield redis.hget('i:metadata', 'stream'); // using ioredis
  this.body = { stream }; // holds a value of null
};

テスト ケースのhsetのすぐ下にそのhgetを挿入すると、値が完全に取得されます。これを修正する方法について誰かアイデアがありますか?

ノート:

誰かが提案する前に、私はすでに接続されたイベントをリッスンしていますが、hsetすぐ下の値を取得でき、それが機能するため、それは問題ではありません。この問題は、約束されたnode_redisインストールでも持続します。

ありがとう!

4

0 に答える 0