我是微风.js 的新手,想出一个很好的方法来组合executeQuery
和executeQueryLocally
.
用例是这样的:我想使用微风数据缓存来隐藏第 3 方 Web 服务的脆弱性。我想提出一个模式来查询服务并在调用时服务不可用时回退到缓存。
我已经咀嚼了几天了 - 任何建议或建议将不胜感激!
我是微风.js 的新手,想出一个很好的方法来组合executeQuery
和executeQueryLocally
.
用例是这样的:我想使用微风数据缓存来隐藏第 3 方 Web 服务的脆弱性。我想提出一个模式来查询服务并在调用时服务不可用时回退到缓存。
我已经咀嚼了几天了 - 任何建议或建议将不胜感激!
我认为这个解决方案可能是一个好方法:
executeQuery= function(query){
operating(true);
return manager.executeQuery(query).fail(fail);
function fail(error){
//You can decide if you want to query locally depending on the type of error
//Example: if(error.status===404) ;
return executeQueryLocally(query);
}
}
executeQueryLocally= function(query){
return manager.executeQuery(query).using(FetchStrategy.FromLocalCache).fail(fail);
function fail(error){
//You can't get the information, so you can throw an error
//Or that you want
throw Error('Impossible to get the requested data');
}
}
//Example calling this methods
var getCustomers= function(resultArrayObservable,inlineCountObservable){
var query = new breeze.EntityQuery("Customers").inlineCount(true);
return executeQuery(query).then(success);
function success(data){
inlineCountObservable(data.inlineCount);
resultArrayObservable(standarizeCustomerDtos(mapCustomerDtosToKos(data.results)));
}
};
使用此解决方案,我试图轻松检查每个查询是否有问题,而不是重复代码。
我希望这可以帮助你。