Проблема в том, что getMasterData при вызове никогда не печатает «Преодолел худший барьер» :(. Бог знает, что я делаю неправильно. Это то, чего я на самом деле хочу достичь.
Что я здесь не так делаю?
Пожалуйста, дайте мне знать. Любая помощь будет по достоинству оценена.
Ниже моя реализация реализации redis узла:
Если я запускаю тот же this.getAll () в цикле без ожидания, он отлично работает.
Во второй раз ждите, что он никогда не вернется обратно из this.cacheStore.getByKey ('организаций') и навсегда зашел в тупик.
Нет ошибок и нет ответа.
Также, если я удалю data2, жду. Тем не менее, он отлично работает.
async setKey(key, data) {
try {
const flatteredData = JSON.stringify(data);
return this.cacheStore.hmset(key, key, flatteredData);
} catch (error) {
return error;
}
}
getByKey(key) { // eslint-disable-line consistent-return
return new Promise((resolve, reject) => {
this.cacheStore.hget(key, key, (err, res) => {
if (err) {
reject(err);
} else {
resolve(JSON.parse(res));
}
});
});
}
async getAll() {
const cache = await this.cacheStore.getByKey('organizations');
if (cache) return cache;
const organizations = await this.db
.collection('organizations')
.find({})
.toArray();
await this.cacheStore.setKey('organizations', organizations);
return organizations;
}
async getMasterData(){
const data1 = await this.getAll();
const data2 = await this.getAll();
console.log('Passed the worst barrier');
}