JayData中的上下文中的实体未定义

时间:2012-06-06 10:57:47

标签: javascript google-chrome jaydata

我编写了这段代码,在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)中;行, “部门” 未定义。我该怎么办?

2 个答案:

答案 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(){
        ...
    });
});

建议始终使用回调函数,因为所有内容都是异步的,并且您不知道该进程在回调之外就已准备就绪。