【问题标题】:Making public realms on Realm Object Server in Swift用 Swift 在 Realm Object Server 上创建公共领域
【发布时间】:2017-06-25 22:46:21
【问题描述】:

我正在尝试创建一个所有用户都拥有读取权限的公共领域。领域团队在 this 网络研讨会中提到了此功能,但我无法找到有关如何执行此操作的任何文档。

这是来自网络研讨会的一张漂亮图片,它说明了可以在对象服务器中创建的领域类型。我不知道如何制作公共领域。

【问题讨论】:

    标签: swift realm realm-mobile-platform realm-object-server


    【解决方案1】:

    这里是做你想做的事的指导。请注意,自该网络研讨会开始以来,此功能已略有变化。 (我们还需要改进我们的文档,所以感谢您提出这个问题!)

    1. 创建管理员用户。您可以通过创建普通用户、转到 Web 仪表板并编辑用户以使其成为管理员来执行此操作。如果用户是管理员,则在登录时其isAdmin 属性应该为true。

    2. 使用您的管理员用户,打开一个全局领域。全局领域是其路径不包含~ 的领域,例如/myGlobalRealm/~/eachUserHasTheirOwnCopy。请注意,默认情况下,其他用户完全无法访问此 Realm。如果领域尚不存在,领域对象服务器将自动创建它。这将是您的公共领域。

    3. 创建一个RLMSyncPermissionValue 以向所有用户授予读取权限。这意味着指定公共领域 (/myGlobalRealm) 的路径,以及 * 的用户 ID。

    4. 然后使用您的新权限值在您的管理员用户上调用-[RLMSyncUser applyPermission:callback:],并确保服务器正确设置权限。

    5. 尝试使用其他用户打开您的公共领域,并确保它可以正常工作。

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      快速解决方案 您可以在模拟器中运行一次,以创建具有默认读/写权限的全局领域。

      SyncUser.logIn(with: .usernamePassword(username: "ADMIN USERNAME", password: "ADMIN PASSWORD!"), server: URL(string: "Your Server URL")! { (user, error) in
                  guard user != nil else{
                      print(error)
                      return
                  }
                  do{
                      let globalRealm = try Realm(configuration: Realm.Configuration(syncConfiguration: SyncConfiguration(user: user!, realmURL: URL(string: "realm://<YOUR SERVER>:9080/GlobalRealm")!),  readOnly: false))
                  }catch{
                      print(error)
                  }
                  let permission = SyncPermissionValue(realmPath: "/GlobalRealm", userID: "*", accessLevel: SyncAccessLevel.write)
                  user!.applyPermission(permission) { error in
                      if let error = error{
                          print(error)
                      }else{
                          user!.retrievePermissions { permissions, error in
                              if let error = error {
                                  print("error getting permissions")
                              }else{
                                  print("SUCCESS!")
                              }
                          }
                      }
                  }
              }
      

      【讨论】:

        【解决方案3】:

        这是一个写公共领域的服务器函数:

        const Realm = require('realm');
        const server_url = 'realm://<Your Server URL>:9080'
        const realmName = 'PublicRealm'
        const REALM_ADMIN_TOKEN = "YOUR REALM ADMIN TOKEN"
        const adminUser = Realm.Sync.User.adminUser(REALM_ADMIN_TOKEN);
        
        
        var newRealm = new Realm({
            sync: {
                user: adminUser,
                url: server_url + '/' + realmName
            },
        });
        

        将代码粘贴到领域仪表板的函数编辑器中,然后运行函数以创建公共领域。您可以通过更改领域构造函数中的属性来修改公共领域。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-11
          • 1970-01-01
          • 1970-01-01
          • 2013-02-13
          • 2011-10-07
          • 1970-01-01
          相关资源
          最近更新 更多