【发布时间】:2017-03-16 21:22:05
【问题描述】:
Loopback 有non-database connectors 的概念,包括REST connector。
将获取请求缓存到此类数据源的正确方法是什么?
【问题讨论】:
-
如果有人已经实现了类似的东西,与社区分享它会很棒,因为我也找不到任何关于它的东西。
标签: rest caching loopbackjs
Loopback 有non-database connectors 的概念,包括REST connector。
将获取请求缓存到此类数据源的正确方法是什么?
【问题讨论】:
标签: rest caching loopbackjs
有趣的想法...我认为您必须自己创建一个新的 custom remote method 并检查值的本地哈希:
// in /common/models/myModel.js
var cache = {};
MyModel.lookup = function loopkup(someParam, next) {
if (cache[someParam]) {
// first see if the value is already in the cache
return next(null, cache[someParam]);
} else {
// otherwise do the REST remote method call...
MyModel.restLoopkup(someParam, function lookupCallback(err, data) {
if (err) { return next(err); }
cache[someParam] = data; // ...and then set the new cache value.
next(null, data);
});
};
MyModel.remoteMethod(
'lookup',
{
accepts: { arg: 'param', type: 'object', http: { source: 'query' } },
returns: { arg: 'results', type: 'object' },
http: { verb: 'get', path: '/lookup' }
}
);
此代码将在.../api/MyModels/lookup?param=foobar 处设置一个端点以供调用代码命中。请注意,您可能还希望为数据设置过期时间并正确管理“缓存”。您还可以使用类似 redis 存储的东西来存储值,而不是像我上面所做的那样使用内存。
祝你好运!
【讨论】: