Так что я на 99% уверен, что просто напортачил.
Я пытаюсь настроить catbox для кэширования объектов в Redis. У меня запущен и работает Redis, и я могу поразить его с помощью RDM (sql pro как утилита для Redis), но Hapi не сотрудничает.
Я регистрирую кэш redis catbox следующим образом:
const server = new Hapi.Server({
cache: [
{
name: 'redisCache',
engine: require('catbox-redis'),
host: 'redis',
partition: 'cache',
password: 'devpassword'
}
]
});
Я делаю это в server.js. После этого блока кода я регистрирую еще несколько плагинов и запускаю сервер. Я также экспортирую сервер в конец файла
module.exports = server;
Затем в моем файле маршрутов я пытаюсь настроить тестовый маршрут следующим образом:
{
method: 'GET',
path: '/cacheSet/{key}/{value}',
config: { auth: false },
handler: function(req, res) {
const testCache = server.cache({
cache: 'redisCache',
expireIn: 1000
});
testCache.set(req.params.key, req.params.value, 1000, function(e) {
console.log(e);
res(Boom.create(e.http_code, e.message));
})
res(req.params.key + " " + req.params.value);
}
},
Примечание. Мои маршруты находятся во внешнем файле и импортируются в server.js, где я их регистрирую.
Если я закомментирую весь кеш-материал на этом маршруте, маршрут будет работать нормально и вернет мои параметры.
Если я запускаю это с кешем, сначала я получаю «сервер не определен». Поэтому я тогда добавил
const server = require('./../server.js');
импортировать сервер.
Теперь, когда я запускаю это, я получаю «server.cache не является функцией» и ошибку 500.
Я не понимаю, что я делаю неправильно. Я предполагаю, что я импортирую сервер, но, возможно, это объект без всех установленных конфигураций, поэтому он не может использовать метод .cache. Однако это кажется неправильным, потому что .cache всегда должен быть методом по умолчанию с кешем памяти по умолчанию, поэтому, даже если моя регистрация в кеше еще не активна, server.cache теоретически должен оставаться методом.
Я знаю, что это должно быть что-то основное, что я напортачил, но что?