1

我看了约翰爸爸的 ( http://www.johnpapa.net/spa/ ) 水疗示例。他正在使用 Knockout、Breeze 构建单页应用程序。我想建立水疗中心,但我希望我的数据在本地存储中而不是在服务器上(以便用户可以在本地拥有他们的数据)。我成功地添加了元数据(在带有 metadataStore.addEntityType 的 javascript 中,而不是来自服务器)并创建了实体 manager.createEntity(entityNames.teacher, { id: blink.core.getUuid() })

我还使用 exportEntities 来获取整个数据库并将该 json 保存到本地存储中。我使用 importEntities 将该 json 导入微风管理器。但是每次我想用 executeQueryLocally 进行查询时,我都会收到一个错误(我可以看到我刚刚在 json 中添加的一个实体):此查询没有可用的元数据

John Papa 的示例首先在服务器上进行查询,然后从缓存(本地)进行查询。是否可以在不先从服务器获取的情况下进行本地查询?我需要微风吗?Breeze 对我来说看起来不错,因为我可以进行查询(出错),也因为它具有导入/导出功能。

编辑

首先我创建了实体

var et = new breeze.EntityType({ shortName: "Teacher", namespace: "AIKON.Timetable", autoGeneratedKeyType: AutoGeneratedKeyType.Identity, }); 

et.addProperty(new breeze.DataProperty({ name: "id", dataType: breeze.DataType.Int32, isNullable: false, isPartOfKey: true })); 

et.addProperty(new breeze.DataProperty({ name: "firstName", dataType: breeze.DataType.String, isNullable: false, maxLength: 50, validators: [Validator.required(), Validator.maxLength({ maxLength: 50 })] })); 

et.addProperty(new breeze.DataProperty({ name: "lastName", dataType: breeze.DataType.String, isNullable: false, maxLength: 50, validators: [Validator.required(), Validator.maxLength({ maxLength: 50 })] })); 

store.addEntityType(et); 
store.registerEntityTypeCtor("Teacher", null, teacherInitializer);

然后我可以得到所有的老师(但我没有查询、订单等)

var list = manager.getEntities('Teacher').sort(compareTeachers);

var query = EntityQuery.from('AIKON.Timetable.Teacher') 

return manager.executeQueryLocally(query); 

抛出错误抛出新的

Error("There is no metadata available for this query"); breeze.debug.js (line 7224)

var query = EntityQuery.from('Teacher')
4

0 回答 0