最近在做一個(gè) React Native APP PasswordAssistant?的時(shí)候惶翻,需要用到數(shù)據(jù)持久化存儲(chǔ)鹰贵,最終選擇用Realm壹无。
在設(shè)置ream對象的schema時(shí),我設(shè)置了一個(gè)主鍵(primaryKey) “id”,
設(shè)置shema
在執(zhí)行realm.create(),并沒有設(shè)置id的值房维。
未給主鍵(primaryKey)賦值
導(dǎo)致報(bào)錯(cuò):Realm Error: “JS value must be of type: number” 。
由于習(xí)慣性的認(rèn)為realm的主鍵像一般數(shù)據(jù)庫一樣银亲,可以設(shè)置自增加的主鍵变姨,因?yàn)闆]有查到realm如何設(shè)置自增加的主鍵,便理所當(dāng)然的認(rèn)為种柑,設(shè)置了主鍵realm便會(huì)默認(rèn)自增加岗仑。實(shí)踐證明,too young聚请,too naive荠雕。事實(shí)上,官方文檔中:"You can specify the primaryKey property in an object model for string and int properties"驶赏,既然主鍵可以是字符串類型炸卑,也就意味著,realm的主鍵不會(huì)默認(rèn)為整型類型一樣自增長母市。
所以矾兜,既然設(shè)置的主鍵,在執(zhí)行realm.create()時(shí)患久,就要給主鍵賦值椅寺,即使將主鍵的屬性 optional設(shè)為true,也不可不賦值蒋失。另外返帕,主鍵的值必須是唯一的。
給主鍵(primaryKey)賦值