有没有办法通过React-Native(JS)预先包装Realm数据库(default.Realm)

时间:2016-04-17 22:31:31

标签: javascript android swift react-native realm

我玩过Realm,让它与React-Native一起工作 - 从JSON文件中插入数据并且能够过滤/读取它。

现在真正的问题是,如何使用我的react-native应用程序预先打包数据。我已经看到了一些问题,其中提到了如何使用Native (IOS)和(Android)

我想检查是否有直接的方法来使用React-Native,可能是某人创建的桥梁?

谢谢!

2 个答案:

答案 0 :(得分:1)

理想情况下,您可以在打开Realm时使用捆绑领域文件的路径。不幸的是,在添加对只读领域的支持之前,这将不起作用。我创建了一个跟踪此问题的问题:https://github.com/realm/realm-js/issues/392

在支持只读领域之前,您可以在AppDelegate中的应用程序启动时将捆绑的领域文件复制到Documents目录中,然后使用该路径访问捆绑的领域。支持相对路径,因此如果您将文件复制到<Documents>/bundled.realm,只需传入文件名就可以打开此文件,即new Realm({path: 'bundled.realm'})

答案 1 :(得分:0)

我们创建了一种实用的方法来访问

  • 来自Android的资产文件夹。
  • 来自iOS的资源。

export function readOnetContent() {
    let mainbundelPath = RNFS.MainBundlePath + "/oNetContent.realm"
    if (Platform.OS == "android") {
        Realm.copyBundledRealmFiles();
        mainbundelPath = "oNetContent.realm"
    }

    return new Promise((resolve, rejects) => {
        Realm.open({
             schema: Schema,
             path: mainbundelPath,
             readOnly: true})
            .then(realm => {
                let oNetContent = realm.objects(OnetContentSchema.name)
                resolve(oNetContent)
            })
            .catch(error => {
                console.log("error: ", error)
                rejects(error)
            })
    })
}

  • IOS的​​目录结构是:

enter image description here

  • Android的目录结构是:

enter image description here