誰かがこれに光を当てることができることを願っています。私は一生、問題が何であるかを見つけることができません。
問題:
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インストールでも持続します。
ありがとう!