我正在创建一个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获得响应就填充它?