Jaydata中的数据类型不匹配

时间:2013-11-14 13:35:48

标签: sqlite types jaydata

我正在使用jaydata + sqlite管理脱机数据库。 在jaydata中,nvarchar(20)不是有效的数据类型,因此我需要使用'String'作为数据类型。 在线数据库使用的数据类型为nvarchar(20)。

现在,我的问题是: 是否可以映射脱机数据库和联机数据库,因为'nvarchar(20)'是在线数据库上的数据类型,'string'是脱机数据库上的数据类型'??


这就是我应该在我的在线数据库中创建的内容:

enter image description here

这是我在使用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}
});

1 个答案:

答案 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。