我编写了这段代码,在Chrome中使用带有JayData的WebSQL:
$data.Entity.extend("$org.types.Department",
{
Id: { type: "int", key: true, computed: true },
Name: { type: "string", required: true }
});
$data.EntityContext.extend("$org.types.OrgContext", {
Department: { type: $data.EntitySet, elementType: $org.types.Department }
});
$org.context = new $org.types.OrgContext({ name: "WebSQL", databaseName:"Organization",
dbCreation: $data.storageProviders.sqLite.DbCreationType.DropTableIfChanged
});
var department = new $org.types.Department({ Name: 'Department1' });
$org.context.Department.add(department);
$org.context.saveChanges();
但问题是,在$ org.context.Department.add(department)中;行, “部门” 未定义。我该怎么办?
答案 0 :(得分:2)
问题是:$ data WebSQL提供程序名称是:webSql
,这样的示例工作得很好。当然还需要onReady处理程序。
答案 1 :(得分:1)
您必须使用上下文的onReady函数。当您尝试将新的Department实体添加到实体集时,尚未初始化上下文。使用是这样的:
$org.context.onReady(function(db){
var department = new $org.types.Department({ Name: 'Department1' });
db.Department.add(department);
db.saveChanges(function(){
...
});
});
建议始终使用回调函数,因为所有内容都是异步的,并且您不知道该进程在回调之外就已准备就绪。