最近在做一个 React Native APP PasswordAssistant 的时候,需要用到数据持久化存储,最终选择用Realm。
在设置ream对象的schema时,我设置了一个主键(primaryKey) “id”,
在执行realm.create(),并没有设置id的值。
导致报错:Realm Error: “JS value must be of type: number” 。
由于习惯性的认为realm的主键像一般数据库一样,可以设置自增加的主键,因为没有查到realm如何设置自增加的主键,便理所当然的认为,设置了主键realm便会默认自增加。实践证明,too young,too naive。事实上,官方文档中:"You can specify the primaryKey property in an object model for string and int properties",既然主键可以是字符串类型,也就意味着,realm的主键不会默认为整型类型一样自增长。
所以,既然设置的主键,在执行realm.create()时,就要给主键赋值,即使将主键的属性 optional设为true,也不可不赋值。另外,主键的值必须是唯一的。