Html5 Breeze离线解决方案

时间:2013-07-16 15:16:46

标签: knockout.js breeze single-page-application

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

0 个答案:

没有答案