2017-04-07 79 views
0

我的目標非常簡單:我需要在共享的Realm中創建私有RealmObjects如何在共享領域創建私有Realm對象

我已經創建了對象並將它們存儲在共享的realm中。我想讓用戶能夠私下存儲他們的對象。據我所知,我有兩種方法可以完成這個任務,但是他們都沒有工作。

解決方法1:使用權限,讓Users份額境界反對對方喜歡下面的示例中:

public static void setActiveUser(final SyncUser user) { 
     if (user.isValid()) { 
      SyncConfiguration defaultConfig = new SyncConfiguration.Builder(user, Colombo.SERVER_URL).build(); 
      Realm.setDefaultConfiguration(defaultConfig); 
      Realm realm = user.getManagementRealm(); 
      realm.executeTransaction(new Realm.Transaction() { 
       @Override 
       public void execute(Realm realm) { 
        String includeAll = "*"; 
         change = new PermissionChange(includeAll, includeAll, true, true, false); 
         realm.insert(change); 
       } 
      }); 
     } 
    } 

不幸的是,這並不工作,同步Realms都只是看得到的電流SyncUser。解決方案2:創建一個「公共」SyncUser保存/顯示公共物品和私人SyncUser爲每個註冊用戶收集他的私人物品,根據需要從普通私人物品切換到私人物品。SyncUser。無論如何,這對我來說似乎相當低效。這聽起來怎麼樣?你認爲還有另一種方式可以做到嗎?

+1

'我需要在一個共享領域創建私有Realm對象' 你是什麼意思的私人?私人,因爲在沒有其他用戶應該訪問它們,或私人,只有這個用戶的事項/特定的? 對於後者,您可以將UUID添加到「私人」對象,以便每個用戶都可以查詢它們,如果您不希望該對象完全可見,則需要爲每個用戶創建一個單獨的Realm ,因爲你不能共享模式。 –

+0

對於私有我的意思是存儲在服務器上的Realm對象,但僅供創建者用戶訪問。 使用UUID不安全,因爲其他用戶將能夠訪問他們沒有權限的對象(例如,通過用另一個用戶替換他們自己的UUID來查詢服務器) –

+2

權限API適用於整個Realm,所以如果你需要一些對象是私有的,那麼恐怕你需要通過使用一個依賴於用戶的端點(例如:'http:// server /〜/ Private')來將它們分離到它們自己的Realm中。看他的Realm'Private',這樣你最終會得到兩個領域,一個是Shared,一個是Private –

回答

1

您不能使用Realm的身份驗證機制爲單個Realm的不同帳戶提供不同的登錄權限。 Nabil說,你可以通過給用戶分配UUID來編程控制訪問,然後只爲每個用戶查詢它們。