缓存环回REST连接器

时间:2016-01-04 16:24:20

标签: rest caching loopbackjs

Loopback的概念为non-database connectors,包括REST connector

缓存获取请求到这种数据源的正确方法是什么?

1 个答案:

答案 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商店这样的值来代替内存,就像我上面所做的那样。

祝你好运!