我是新来的微风,这看起来像一个错误,但认为我会问在这里,如果我只是不明白。执行与加载的元数据本地查询失败
安装加载元数据:
var metadataStore = new breeze.MetadataStore();
metadataStore.importMetadata(metadata);
queryOptions = new breeze.QueryOptions({
fetchStrategy: breeze.FetchStrategy.FromLocalCache
});
mgr = new breeze.EntityManager({
serviceName: 'breeze',
metadataStore: metadataStore,
queryOptions: queryOptions
});
执行本地查询工作明确:
var q = breeze.EntityQuery.from("Boards")
.toType('Board')
.where('isImplicit', 'equals', withImplicits)
.orderBy('name');
return manager.executeQueryLocally(q) // returns result
但使用query.using
并不:
var q = breeze.EntityQuery.from("Boards")
.toType('Board')
.where('isImplicit', 'equals', withImplicits)
.orderBy('name');
q = q.using(breeze.FetchStrategy.FromLocalCache)
return manager.executeQuery(q)
UPDATE:澄清,上述抛出一个错误,因为它尝试fetchMetdata并且存在没有端点可以从中提取。如果我猴子补丁下面的代码,它工作正常。这似乎是如果dataService .hasServerMetadata
,你不需要获取它。我创建了一个微风适配器测试工具,所以我希望能够在不后端
貌似问题是在this line EntityManager的运行:
if ((!dataService.hasServerMetadata) || this.metadataStore.hasMetadataFor(dataService.serviceName)) {
promise = executeQueryCore(this, query, queryOptions, dataService);
} else {
var that = this;
promise = this.fetchMetadata(dataService).then(function() {
return executeQueryCore(that, query, queryOptions, dataService);
});
}
我相信行应if(dataService.hasServerMetadata || ...
,但对Breeze来说,新的想法在开启GH问题之前我会问到这里。
是的,我理解上的差异,我想正是使用第二格式的原因你指定。我只想确认这是一个错误,它在手动使用元数据加载并且纯粹运行本地时不起作用。 – martypdx 2014-09-03 22:37:43
对不起,我必须错过一些东西......我不明白你认为这个错误是什么。 'return manager.executeQuery(q)'将总是返回一个Promise而不是实际的实体。你看到什么错误? – 2014-09-03 22:42:33
对不起,周杰伦,增加了一些细节。基本上我创建了一个测试工具并希望在没有服务器的情况下运行。 – martypdx 2014-09-03 23:29:01