我正在使用jaydata + sqlite管理脱机数据库。 在jaydata中,nvarchar(20)不是有效的数据类型,因此我需要使用'String'作为数据类型。 在线数据库使用的数据类型为nvarchar(20)。
现在,我的问题是: 是否可以映射脱机数据库和联机数据库,因为'nvarchar(20)'是在线数据库上的数据类型,'string'是脱机数据库上的数据类型'??
这就是我应该在我的在线数据库中创建的内容:
这是我在使用jaydata + sqlite的离线数据库中创建的:
// Table definition of user
$data.Entity.extend("user", {
'UserId' : { key:true,type:'int',nullable:false,required:true },
'Username' : { type:'string',nullable:false,required:true },
'Password' : { type:'string',nullable:false,required:true},
'UserType' : { type:'string',nullable:false,required:true},
'CreatorId' : { type:'int',nullable:false,required:true},
'CreatedAt' : { type:'datetime',nullable:true},
'ModifierId' : { type:'int',nullable:true},
'ModidiedAt' : { type:'datetime',nullable:true},
'IsDeleted' : { type:'boolean',nullable:false,required:true}
});
答案 0 :(得分:1)
免责声明:我是JayData的创作者之一
您可以使用在线架构创建脱机数据库。 NVarchar(20)甚至不是OData类型 - 所以我猜它只是'Edm.String'和maxLength = 20修饰符。然而,Edm.String被映射到JavaScript中的类型“String”。
分享您的架构定义也有助于我提供更好的答案。
已编辑
以下模式定义适用于在线端点(随odata或REST提供),并且还可以在本地创建相同的表定义。
$data.Entity.extend("user", {
'userid' : { key:true,type:'string', maxLength:216,required:true },
'username' : { type:'string',maxLength:216, required:true },
'password' : { type:'string',maxLength:64,required:true},
....
});
这是你需要的吗?请注意,在JS中,每个字符串都是nvarchar,因为javascript在内部是UTF8。