如何在React Native应用程序和共享扩展之间共享Realm数据库

时间:2016-04-12 16:59:49

标签: ios react-native realm

有没有办法使用React Native API在JavaScript中实例化Realm数据库,以便包含主应用程序和共享扩展的应用程序组可以访问它?

我们正在创建一个React Native应用程序,该应用程序需要共享扩展程序才能使用我们的后端服务将数据导入应用程序。我们的用户身份验证信息存储在Realm数据库中,共享扩展还需要访问此信息,以便代表用户联系服务。

目前,我们发现完成此任务的唯一方法是在AppDelegate中计算领域路径,然后将其传递给我们的根组件,如下所示:

NSURL *realmPathUrl = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.company.product"];
NSString *realmPath = [[realmPathUrl path] stringByAppendingPathComponent:@"db.realm"];
NSDictionary *props = @{@"realmPath" : realmPath};
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"product" initialProperties:props launchOptions:launchOptions];

然后在根组件中:

const userPrefsRealmDatabase = new Realm({path: props.realmPath, ...otherOptions});

但这是一个非常混乱的解决方案,并且我们的Flux实现引入了一些问题,因为Stores在根组件之前被实例化,但需要访问Realm数据库。

2 个答案:

答案 0 :(得分:0)

您可以查看react-native插件https://github.com/realm/realm-js

答案 1 :(得分:0)

我建议您创建自己的本机模块,将路径导出为常量,因为当您加载JS时,它将立即可用。有关如何执行此操作,请参阅Exporting Constants部分。