所以我很喜歡99%肯定我只是搞砸了一些愚蠢的東西。Hapi.js Catbox Redis返回「server.cache不是一個函數」
我想設置catbox來緩存對象到redis。我有redis和運行,並且我可以用RDM(類似於redis的實用程序的sql pro)來打它,但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在理論上仍應該是一種方法。
我知道它必須是基本的東西我搞砸了,但是什麼?
您好,我正在使用catbox-redis進行緩存,並且我遇到了問題。它不會設置值,而是顯示斷開的eror。如果你有任何關於它,請幫助我http://stackoverflow.com/questions/41779511/catbox-redis-is-showing-disconnected-error-on-my-hapijs-application – Sivabalan
你也可以通過使用服務器內部處理程序request.server – sij