2017-04-07 58 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来编程控制访问,然后只为每个用户查询它们。

相关问题