在ExpressJS中按需加载存储库

时间:2018-06-18 12:31:43

标签: rest express pug

我正在创建一个ExpressJS应用程序,该应用程序从第三方REST服务请求信息。在我的路由器中,我可以使用Observable成功从REST服务请求信息:

cafes.js route

var usa_cafes = function(req, res) {
 app.getRepository("CafeRepository").getCafesInCountry('USA').subscribe(response => {
   //render the response..
 });
}

router.get('/cafes', usa_cafes);

CafeRepository.js:

this.getCafesInCountry = function(country) {
    let query = DeliveryClient.items()
    .type('cafe')
    .equalsFilter('elements.country', country)
    .orderParameter('system.name');
    return query.getObservable();
}

但是,你可以看到getCafesInCountry每次调用它时都会查询第三方API,所以我想切换到第一方加载所有项的方法请求的时间(例如this.allitems)并使用单独的方法从主列表中提取项目。

我不想在创建项目时(在app.js中)加载所有项目,因为可能永远不会使用存储库(即用户不会打电话/网吧)。我想在需要存储库时加载它们,例如在getCafesInCountry函数中。

我很难概念化它是如何工作的......因为该方法需要返回一个Observable,它将提供所需的确切项目。或者我错过了什么,是否有可能在ExpressJS中延迟加载"物品进入帕格视图?例如,当存储库中尚不可用时,加载包含咖啡馆描述的页面,但是一旦从REST获得响应就填充它?

0 个答案:

没有答案