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