2016-10-23 62 views
1

也許我正在想這是錯誤的方式,但我如何創建一個預填充的Realm DB?例如,假設我想創建一個包含1000個詞和其中的定義的詞典。用戶可以更改應用內的定義,但最初數據庫將具有默認定義。如何爲React Native應用程序創建Realm數據庫?

我可以用1000個單詞和定義創建一個.realm文件並將其包含在我的應用程序中嗎?

僅供參考:我正在使用Realm和React Native,我目前正在使用emulator -avd CordovaAVD進行測試以啓動我的Android模擬器。

+0

您應該閱讀以前的答案:http:// stackoverflow。com/questions/33674982 /帶預填充數據的領域與資產 – Orlando

+0

該答案似乎與React Native沒有任何關係。它看起來可能會描述如何在本機Android應用程序中執行此操作。我會從我的問題中刪除android標籤,以防引起混淆。 – bergie3000

回答

1

我想我已經想通了,所以我會張貼我的解決方案,以防其他人可能會發現它的用處。

我有一個函數將填充Realm DB。但是,一旦我運行該功能,我想抓住該靜態數據庫並使用它,而不是在每次啓動應用程序時生成數據庫。這就是促使我努力的原因。但是,如果您只想備份數據庫,這些步驟也很有用。

我主要是使用模擬器進行測試,但我認爲如果您在實際設備上進行測試,這些步驟將起作用。通過在代碼中加入這個地方

  1. 找到路徑到手機內,你的境界文件:
 let YourRealmDB = new Realm({schema: [YourSchema]}); 
    console.log('YourRealmDB path =', YourRealmDB.path);

要抓住從模擬器境界DB =「2」>

  • 路徑將類似於
    /data/data/(package.name)/files/(filename).realm
    「文件名」將可能是「默認」
  • 在命令行中運行
    adb exec-out run-as (package.name) cat files/(filename).realm > (filename).realm
  • 這將數據庫複製你的境界到當前目錄
  • 現在,使用該數據庫中的應用:

    1. 創建域對象:
      let YourRealmDB = new Realm({schema: [YourSchema]});
    2. 設置的對象路徑的DB:
      YourRealmDB.defaultPath = 'path/to/your/db/(filename).realm';

    注:如果您使用「本地」 DB這樣和你的應用程序執行寫操作,也不會寫 到本地數據庫。它將寫入數據庫YourRealmDB.path。因此,如果您想複製或 查看更新的數據庫,則需要再次運行adb exec-out run-as (package.name) cat files/(filename).realm > (filename).realm 以獲取最新版本的數據庫。

    我希望有幫助。我花了相當長的時間把所有這些都集中在一起。

    +0

    謝謝你,但是當我使用Realm瀏覽器打開文件時,它要求加密密鑰?我可以在那裏得到? –

    相關問題