2017-02-13 51 views
0

我正在尝试将我的应用与Realm.io集成在一起,因为它似乎是一个非常棒的平台。我正尝试通过类似的方式正确登录并注册用户:Realm + React原生最佳实践用户设置同步

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); 
    } 
}) 

这似乎工作得很好。我有类似的代码登录用户进入领域。虽然,在王国JS看时(阵营母语)的例子在这里: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没有提供注册用户的可靠示例。

我的问题是:

  • 什么让事情变得整洁和设置用户正确的最好方法?
  • 有没有更好的方法来访问已被设置为sync: { user: user, url: 'realm url'}的已初始化的realm对象?
  • 有没有更好的例子来学习如何做到这一点?

如果我的问题没有意义,请让我知道,我会尽力详细说明......因为我意识到这可能不容易理解。

回答

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

+0

伟大的建议。感谢您的意见。 我现在试图弄清楚如何处理身份验证状态。在领域文档中看不到任何关于此的东西。 –

+0

出错了。 我无法重新分配this.realm。 initialize后的realmContainer.realm为null。 –