breeze:使用客户端模型时查询本地缓存
考虑下面的代码。从服务器获取数据时,它工作正常。我有一个自定义数据适配器(staffManagemetnService),它从服务器返回的json创建客户端实体 但是,如果我在本地调用ExecuteQueryLocal,它将失败并引发以下异常:breeze:使用客户端模型时查询本地缓存,breeze,Breeze,考虑下面的代码。从服务器获取数据时,它工作正常。我有一个自定义数据适配器(staffManagemetnService),它从服务器返回的json创建客户端实体 但是,如果我在本地调用ExecuteQueryLocal,它将失败并引发以下异常:找不到resourceName的entityType:“GetInternalResourcesByCompetence”。考虑向查询添加一个“EntIQual.toType”调用,或者调用Meta DATASTUR.StEngTyType FraseCa
找不到resourceName的entityType:“GetInternalResourcesByCompetence”。考虑向查询添加一个“EntIQual.toType”调用,或者调用Meta DATASTUR.StEngTyType FraseCaseNead方法登记这个资源名称< /C> > /P>的EntyType类型。
var query = breeze.EntityQuery.from('GetInternalResourcesByCompetence').withParameters(parameters);
var result = self.manager.executeQueryLocally(query.using(dataService.staffManagementService));
if (result) {
return $q.resolve(result);
} else {
return this.manager.executeQuery(query.using(dataService.staffManagementService))
.then(function (data) {
return data.results;
})
.catch(function (err) {
logError('Restrieving resources days off failed', err, true);
});
}
我不知道这是什么意思。既然我特别要求breeze使用自定义dataAdapter,那么它是否应该开箱即用呢?重要的是要区分资源名称和实体类型名称。资源名称通常是端点的一部分,并且是复数形式(例如orders
)。类型名称通常是单数的(例如order
)
在本地,breeze不能对资源名做太多处理,因为它不会调用端点。相反,您需要一个特定的实体类型名称
您可以使用setEntityTypeForResourceName
函数将entityType映射到resourcename:
metadataStore.setEntityTypeForResourceName('Speakers', 'Person');
请参阅“资源名称不是EntityType名称”一章和以下章节:是的,您是对的。最后,我从缓存中检索实体,然后使用一个简单的过滤函数过滤出结果。但是不能使用withParams应用筛选器。