[英]How to use generateFunc in server.cache() in Hapi.js?
如下圖所示,如何使用generateFunc?
server.cache({
expiresIn: 1000*60*60,
segment: 'test',
generateFunc: function(key,next){}
});
我知道generateFunc用於生成一個新的緩存項,如果在調用get()時未在緩存中找到一個緩存項-直接從api文檔開始。 但是,我仍然不確定如何將get()與generateFunc()結合使用
如果我在類對象中使用以下內容,如何在generateFunc中從構造函數中引用類變量?
class Test { constructor(){ this.testVar = 'hello'; } register(server) { this.server = server; this.testCache = server.cache({ expiresIn: 1000*60*60, segment: 'test', generateFunc: function(key,next){} }); } }
我不明白流程。 我需要一個帶有說明的簡單示例大綱,但是找不到任何好的資源。
從文檔中:
generateFunc (id,next)-如果在調用get()時在緩存中未找到新的緩存項,則該函數用於生成新的緩存項。
- id-提供給get()方法的id字符串或對象。
- 未來 -當新項目與簽名功能(ERR,值,TTL),其中返回調用的方法:
- err-錯誤條件。
- 值 -產生新的價值。
- ttl-緩存ttl值(以毫秒為單位)。 設置為0以跳過存儲在緩存中。 默認為緩存全局策略。
獲取 (ID,回調),其中:
id-唯一商品標識符。
callback ,function(err,value,cached,report),其中:
- err-遇到的任何錯誤。
- 值 -的取出或生成的值。
高速緩存 -如果在高速緩存中找不到有效的項目或具有以下鍵的對象,則為null:
- 項目 -緩存值。
- 已存儲 -將項目存儲在緩存中的時間戳。
- ttl-記錄的緩存ttl值。
- isStale-如果該項是陳舊的, 則為 true。
設置 (id,值,ttl,回調),其中:
- id-唯一商品標識符
- value-要存儲的字符串或對象值。
- ttl-生存時間值(以毫秒為單位),在此值之后,該項目會自動從緩存中刪除(或標記為無效)。
- callback-具有簽名函數(err)的函數。
有關您問題的答案,可以在文檔,來源中以及通過實驗找到: http : //hapijs.com/tutorials/caching
https://github.com/hapijs/catbox
generateFunc
的回調,然后catbox處理(err, value)
,然后再調用get
的回調。 ttl
“默認為緩存全局策略” 。 我猜expiresIn
是該策略。 generateFunc
調用set
,而是通過next
將值傳遞到catbox,它將為您存儲它。 this
方法的方法。 我還沒有測試代碼: class Test {
constructor(){
this.testVar = 'hello';
}
register(server) {
this.server = server;
const self = this;
this.testCache = server.cache({
expiresIn: 1000*60*60,
segment: 'test',
// Old trick
generateFunc: function(key,next){ console.log(self.testVar); },
// or new trick
generateFunc: (key,next) => console.log(this.testVar) // Read about arrow functions
// or
generateFunc: this._cacheGenerateFunc.bind(this),
});
}
_cacheGenerateFunc(id, next) {/* Your code */}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.