我正在使用React Native构建一个小型应用程序,并希望使用Realm实现持久性。
我为Person
:定义了以下模式
const personSchema = {
name: 'Person',
properties: {
familyName: {type: 'string', optional: true},
givenName: {type: 'string'},
middleName: {type: 'string', optional: true},
emailAddresses: {type: 'list', objectType: 'string'},
}
}
export class Person {}
Person.schema = personSchema
关于如何定义Realm模式的信息可以在Realm文档中找到。
然后我实例化DB,如下所示:
const schemas = [Person]
const db = new Realm({schema: schemas})
然而,当到达最后一行时有一个异常,给了我以下错误:
未处理的JS异常:由于以下原因需要迁移错误:
- 属性
emailAddresses
的目标类型string
不存在
我正在使用iOS模拟器进行测试,并多次删除该应用程序,然后使用Xcode中的播放按钮重新安装。
有人知道我为什么会得到这个例外吗?
更新
我现在为另一个数据库对象创建了一个单独的模式:EmailAdress
const emailAddressSchema = {
name: 'EmailAddress',
properties: {
label: 'string',
email: 'string'
}
}
export class EmailAddress {}
EmailAddress.schema = emailAddressSchema
我还将personSchema
中emailAddresses
的objectType
更改为EmailAddress
类型:
...
emailAddresses: {type: 'list', objectType: 'EmailAddress'},
...
现在,我再也不例外了。难道不能将属性添加到作为string
列表的Realm类中吗?
Realm中还不支持基元列表。在它们出现之前,您需要像使用EmailAddress
一样将基元类型包装在对象中