2017-02-13 52 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。 –