realm.io 中具有多个键列的对象
Objects with multiple key columns in realm.io
我正在使用 Realm.io 数据库编写一个应用程序,该应用程序将从另一个服务器数据库中提取数据。服务器数据库中有一些表的主键由多个字段组成。现在我找不到在领域中指定多列键的方法,因为 primaryKey() 函数只有 returns 一个可选的字符串。
这个有效:
//指数
覆盖静态函数 primaryKey() ->String?
{
return "login"
}
但我需要的是这样的:
//index
override static func primaryKey() ->[String]?
{
return ["key_column1","key_column2"]
}
我在文档中找不到有关如何执行此操作的任何内容。
在 Realm 中不可能提供多个属性作为主键。目前,您只能指定一个。
您能否使用这两列中的信息来创建一个您可以替代使用的唯一值?
它本身不受支持,但有一个不错的解决方法。您可以添加另一个包含复合键的 属性 并将其设为 属性 主键。
查看 github 上的对话了解更多详情 https://github.com/realm/realm-cocoa/issues/1192
从概念上讲,您可以通过使用从两个或多个字段驱动的哈希方法来做到这一点。
假设这两个字段 'name' 和 'lastname' 用作多个主键。这是一个示例伪代码:
StudentSchema = {
name: 'student',
primaryKey: 'pk',
properties: {
pk: 'string',
name: 'string',
lastname: 'string',
schoolno: 'int'
}
};
...
...
// Create a hash string drived from related fields. Before creating hash combine the fields in order.
myname="Uranus";
mylastname="SUN";
myschoolno=345;
hash_pk = Hash( Concat(myname, mylastname ) ); /* Hash(myname + mylastname) */
// Create a student object
realm.create('student',{pk:hash_pk,name:myname,lastname:mylastname,schoolno: myschoolno});
如果需要 ObjectId,则转到 Convert string to ObjectID in MongoDB
我正在使用 Realm.io 数据库编写一个应用程序,该应用程序将从另一个服务器数据库中提取数据。服务器数据库中有一些表的主键由多个字段组成。现在我找不到在领域中指定多列键的方法,因为 primaryKey() 函数只有 returns 一个可选的字符串。
这个有效: //指数 覆盖静态函数 primaryKey() ->String? { return "login" }
但我需要的是这样的:
//index
override static func primaryKey() ->[String]?
{
return ["key_column1","key_column2"]
}
我在文档中找不到有关如何执行此操作的任何内容。
在 Realm 中不可能提供多个属性作为主键。目前,您只能指定一个。
您能否使用这两列中的信息来创建一个您可以替代使用的唯一值?
它本身不受支持,但有一个不错的解决方法。您可以添加另一个包含复合键的 属性 并将其设为 属性 主键。
查看 github 上的对话了解更多详情 https://github.com/realm/realm-cocoa/issues/1192
从概念上讲,您可以通过使用从两个或多个字段驱动的哈希方法来做到这一点。 假设这两个字段 'name' 和 'lastname' 用作多个主键。这是一个示例伪代码:
StudentSchema = {
name: 'student',
primaryKey: 'pk',
properties: {
pk: 'string',
name: 'string',
lastname: 'string',
schoolno: 'int'
}
};
...
...
// Create a hash string drived from related fields. Before creating hash combine the fields in order.
myname="Uranus";
mylastname="SUN";
myschoolno=345;
hash_pk = Hash( Concat(myname, mylastname ) ); /* Hash(myname + mylastname) */
// Create a student object
realm.create('student',{pk:hash_pk,name:myname,lastname:mylastname,schoolno: myschoolno});
如果需要 ObjectId,则转到 Convert string to ObjectID in MongoDB