在Swift中在Realm Object Server上创建公共领域

时间:2017-06-25 22:46:22

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

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

以下是来自网络研讨会的精彩图片,其中说明了可以在对象服务器中进行的领域类型。我无法找到如何建立公共领域。

Realm Object Server Types of Synced Realms Diagram

3 个答案:

答案 0 :(得分:3)

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

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

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

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

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

  5. 尝试使用其他用户打开您的公共领域,并确保其有效。

  6. 我希望这会有所帮助。

答案 1 :(得分:1)

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

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!")
                        }
                    }
                }
            }
        }

答案 2 :(得分:0)

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

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

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