Loopback的概念为non-database connectors,包括REST connector。
缓存获取请求到这种数据源的正确方法是什么?
答案 0 :(得分:1)
有趣的想法......我认为你必须自己创建一个新的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商店这样的值来代替内存,就像我上面所做的那样。