【发布时间】:2016-02-06 17:14:23
【问题描述】:
generateFunc如何使用,如下图?
server.cache({
expiresIn: 1000*60*60,
segment: 'test',
generateFunc: function(key,next){}
});
我知道 generateFunc 用于在调用 get() 时直接从 api 文档中生成一个新的缓存项,如果在缓存中找不到一个。但是,我仍然不确定如何使用 get() 和 generateFunc()
- 如果我使用get()和generateFunc(),get的回调是generateFunc的回调(命名为next())吗?
- 如果我在 server.cache 中定义了 expiresIn,是否必须在 get 的回调和 generateFunc 的回调中定义 ttl?
- 我是否仍然在 generateFunc 的回调 (next()) 中使用 set 方法来缓存项目?
-
如果我在类对象中使用以下内容,如何从 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 字符串或对象。
- next - 当带有签名 function(err, value, ttl) 的新项目返回时调用的方法,其中:
- err - 错误情况。
- value - 生成的新值。
- ttl - 以毫秒为单位的缓存 ttl 值。设置为 0 以跳过缓存中的存储。默认为缓存全局策略。
get(id,回调),其中:
id - 唯一的项目标识符。
回调,函数(错误、值、缓存、报告),其中:
- err - 遇到的任何错误。
- value - 获取或生成的值。
cached - 如果在缓存中未找到有效项目或具有以下键的对象,则为 null:
- item - 缓存的值。
- stored - 项目存储在缓存中的时间戳。
- ttl - 记录的缓存 ttl 值。
- isStale - 如果项目已过时,则为 true。
设置(id、值、ttl、回调),其中:
- id - 唯一的项目标识符
- value - 要存储的字符串或对象值。
- ttl - 以毫秒为单位的生存时间值,在此之后项目会自动从缓存中删除(或标记为无效)。
- callback - 带有签名 function(err) 的函数。
【问题讨论】:
标签: javascript node.js caching callback hapijs