我是breeze.js的新手,我在设法executeQuery
和executeQueryLocally
时遇到了一些麻烦。
用例是这样的:我想使用breeze数据缓存来隐藏第三方Web服务的瑕疵。我想提出一种查询服务的模式,如果服务在被调用时不可用,则会回退到缓存中。
我一直在咀嚼这几天 - 任何建议或意见都将不胜感激!
答案 0 :(得分:2)
我认为这个解决方案可能是一个好方法:
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)));
}
};
通过这个解决方案,我试图在每个查询中轻松检查是否出现了问题并且不重复代码。
我希望这可以帮到你。