我看了约翰爸爸的 ( 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')