我看了约翰帕帕(http://www.johnpapa.net/spa/)水疗中心的例子。他正在使用Knockout,Breeze构建单页应用程序。我想构建spa,但我希望我的数据不在服务器上的本地存储中(这样用户可以在本地获取数据)。我成功添加了元数据(在javascript中使用metadataStore.addEntityType,而不是来自服务器)并创建实体manager.createEntity(entityNames.teacher,{id:breeze.core.getUuid()})
我还使用exportEntities来获取整个数据库并将json保存到localstorage中。我使用importEntities将json导入breeze管理器。但每次我想用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')