在 Swift 的领域对象服务器上创建 public 个领域
Making public realms on Realm Object Server in Swift
我正在尝试创建一个所有用户都具有读取权限的 public 领域。领域团队在 this 网络研讨会中提到了此功能,但我找不到有关如何执行此操作的任何文档。
这是来自网络研讨会的一张漂亮的图片,它说明了可以在对象服务器中创建的领域类型。我无法找到如何制作 public 领域。
这里有做你想做的事的指导。请注意,自该网络研讨会推出以来,此功能已略有变化。 (我们还需要改进我们的文档,所以感谢您提出这个问题!)
创建管理员用户。您可以通过创建普通用户、转到 Web 仪表板并编辑用户使其成为管理员来完成此操作。如果用户是管理员,则在登录时其 isAdmin
属性 应该为真。
使用您的管理员用户,打开一个全局领域。全局领域是其路径不包含 ~
的领域,例如 /myGlobalRealm
与 /~/eachUserHasTheirOwnCopy
。请注意,默认情况下,其他用户完全无法访问此领域。如果 Realm 还不存在,Realm 对象服务器将自动创建它。这将是您的 public 领域。
创建 RLMSyncPermissionValue
以授予所有用户读取权限。这意味着指定 public 领域 (/myGlobalRealm
) 的路径,以及 *
.
的用户 ID
然后用您的新权限值在您的管理员用户上调用-[RLMSyncUser applyPermission:callback:]
,并确保服务器正确设置权限。
尝试使用不同的用户打开您的 public 领域,并确保它可以正常工作。
希望对您有所帮助。
这里是写一个 public 领域的服务器函数:
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
},
});
将代码粘贴到领域仪表板的函数编辑器中,然后将 运行 函数粘贴到创建 public 领域的函数中。您可以通过更改领域构造函数中的属性来修改 public 领域。
Swift 解决方案
您可以 运行 在您的模拟器中创建一个具有默认 read/write 权限的全局领域。
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!")
}
}
}
}
}
我正在尝试创建一个所有用户都具有读取权限的 public 领域。领域团队在 this 网络研讨会中提到了此功能,但我找不到有关如何执行此操作的任何文档。
这是来自网络研讨会的一张漂亮的图片,它说明了可以在对象服务器中创建的领域类型。我无法找到如何制作 public 领域。
这里有做你想做的事的指导。请注意,自该网络研讨会推出以来,此功能已略有变化。 (我们还需要改进我们的文档,所以感谢您提出这个问题!)
创建管理员用户。您可以通过创建普通用户、转到 Web 仪表板并编辑用户使其成为管理员来完成此操作。如果用户是管理员,则在登录时其
isAdmin
属性 应该为真。使用您的管理员用户,打开一个全局领域。全局领域是其路径不包含
~
的领域,例如/myGlobalRealm
与/~/eachUserHasTheirOwnCopy
。请注意,默认情况下,其他用户完全无法访问此领域。如果 Realm 还不存在,Realm 对象服务器将自动创建它。这将是您的 public 领域。创建
RLMSyncPermissionValue
以授予所有用户读取权限。这意味着指定 public 领域 (/myGlobalRealm
) 的路径,以及*
. 的用户 ID
然后用您的新权限值在您的管理员用户上调用
-[RLMSyncUser applyPermission:callback:]
,并确保服务器正确设置权限。尝试使用不同的用户打开您的 public 领域,并确保它可以正常工作。
希望对您有所帮助。
这里是写一个 public 领域的服务器函数:
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
},
});
将代码粘贴到领域仪表板的函数编辑器中,然后将 运行 函数粘贴到创建 public 领域的函数中。您可以通过更改领域构造函数中的属性来修改 public 领域。
Swift 解决方案 您可以 运行 在您的模拟器中创建一个具有默认 read/write 权限的全局领域。
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!")
}
}
}
}
}