Breeze 可能的微风1.4.8错误?fetchEntityByKey未等待元数据
我的代码如下:Breeze 可能的微风1.4.8错误?fetchEntityByKey未等待元数据,breeze,Breeze,我的代码如下: var getUserByGuid = function (guid, entityObservable) { return datacontext.manager.user.fetchEntityByKey('User', guid, true) .then(fetchSucceeded) .fail(queryFailed); fu
var getUserByGuid = function (guid, entityObservable) {
return datacontext.manager.user.fetchEntityByKey('User', guid, true)
.then(fetchSucceeded)
.fail(queryFailed);
function fetchSucceeded(data) {
var entity = data.entity;
if (ko.isWriteableObservable(entityObservable))
entityObservable(entity);
return entity;
}
function queryFailed(error) {
logger.error(error);
}
};
为此:
var getUserByGuid = function (guid, entityObservable) {
if (datacontext.manager.user.metadataStore.isEmpty()) {
return datacontext.manager.user.metadataStore.fetchMetadata('breeze/user')
.then(function () {
return datacontext.manager.user.fetchEntityByKey('User', guid, true)
.then(fetchSucceeded)
.fail(queryFailed);
});
} else {
return datacontext.manager.user.fetchEntityByKey('User', guid, true)
.then(fetchSucceeded)
.fail(queryFailed);
}
function fetchSucceeded(data) {
var entity = data.entity;
if (ko.isWriteableObservable(entityObservable))
entityObservable(entity);
return entity;
}
function queryFailed(error) {
logger.error(error);
}
};
注意额外的检查以验证元数据存储是否准备就绪?由于我正在调用fetch,所以我假设此检查将在内部进行,但由于某些原因,它不是
我的代码运行良好,有以下“变通办法”,但我希望将其公诸于众。于2014年3月1日更新
从Breeze 1.4.9(或更高版本)开始,此问题现已修复
以前的职位
我认为你是对的。我认为问题在于,当您告诉fetchEntityByKey首先搜索本地缓存时,它实际上不必执行提取。但是在这种情况下,如果您没有元数据,那么localQuery将失败。我将尝试在下一版本中修复此问题,可能在本周晚些时候发布