Realm + React本地最佳实践用户设置同步

时间:2017-02-13 20:34:59

标签: javascript ios react-native realm es6-modules

我正在尝试将我的应用程序与Realm.io集成..因为它似乎是一个非常棒的平台。我正在尝试登录+通过以下方式正确注册用户:

Realm.Sync.User.register('http://realm-ip:9080', this.state.email, this.state.password, (error, user) => {
  if (!error) {
    var realm = new Realm({
      sync: {
        user: user,
        url: 'realm://realm-ip:9080/~/userRealm',
      },
      schema: [PersonSchema, ConversationSchema]
    });
  }
  else {
    console.log(error);
  }
})

这看起来效果很好。我有类似的代码用于登录用户进入领域。但是,在查看Realm JS(React Native)示例时:https://github.com/realm/realm-js/blob/master/examples/ReactExample/components/realm.js他们使用类似的东西导出领域对象:

 export default new Realm({schema: [Todo, TodoList]});

现在,这看起来非常整洁,并且在应用程序的其余部分中使用realm完美无瑕。但是,它并没有使用同步对象及其中的用户详细信息,如使用Realm.Sync.User.*时提供的那样我也无法找到实现此模块化设计的最佳实践方法,但仍然让用户通过我用Realm.Sync.User.register()

显示的第一个例子登录/注册

此处的示例应用https://github.com/realm/realm-js/blob/master/examples/ReactExample并未提供注册用户的可靠示例。

我的问题是:

  • 保持整洁并正确设置用户的最佳方法是什么?
  • 是否有更好的方法可以访问已使用realm设置的已初始化sync: { user: user, url: 'realm url'}对象?
  • 有没有更好的例子来学习如何做到这一点?

如果我的问题没有意义,请告诉我,我会尽力详细说明......因为我觉得这可能不容易理解。

1 个答案:

答案 0 :(得分:3)

嗯,这取决于你的情况,有很多方法可行。 我想你可以这样做:

// realm-container.js

import Realm from 'realm';

export default {
  realm: null,
  initialize: (email, password) => {
    Realm.Sync.User.register('http://realm-ip:9080', email, password, (error, user) => {
      if (!error) {
        this.realm = new Realm({
          sync: {
            user: user,
            url: 'realm://realm-ip:9080/~/userRealm',
          },
          schema: [PersonSchema, ConversationSchema]
        });
      }
      else {
        console.log(error);
      }
    })
  }
};

然后,如果你把它包括在内     从'./realm-container'导入realmContainer;

然后你可以致电realmContainer.initialize(email, password)并参考这样的领域:realmContainer.realm