Обнародование областей на Realm Object Server в Swift
Я пытаюсь сделать общедоступную область, к которой у всех пользователей будут права на чтение. Команда царства упомянула эту возможность на этом вебинаре, но у меня возникли проблемы с поиском какой-либо документации о том, как это сделать.
Вот хорошее изображение с вебинара, которое иллюстрирует типы областей, которые могут быть созданы на объектном сервере. У меня проблемы с поиском, как сделать публичное царство.
3 ответа
Вот указания, как делать то, что вы хотите. Имейте в виду, что эта функция немного изменилась с момента представления вебинара. (Мы также должны улучшить нашу документацию, поэтому спасибо за вопрос!)
Создайте пользователя с правами администратора. Вы можете сделать это, создав обычного пользователя, зайдя на веб-панель управления и отредактировав пользователя, чтобы он стал администратором. Если пользователь является администратором, при входе его
isAdmin
свойство должно быть правдой.Используя вашего администратора, откройте глобальное Царство. Глобальное Царство - это то, чей путь не содержит
~
, например/myGlobalRealm
против/~/eachUserHasTheirOwnCopy
, Обратите внимание, что эта область по умолчанию полностью недоступна для других пользователей. Если Realm еще не существует, Realm Object Server автоматически создаст его. Это будет ваше публичное Царство.Создать
RLMSyncPermissionValue
предоставить разрешения на чтение всем пользователям. Это означает указание пути к общедоступному Царству (/myGlobalRealm
), а также идентификатор пользователя*
,Тогда позвони
-[RLMSyncUser applyPermission:callback:]
на вашего администратора с новым значением разрешения и убедитесь, что сервер правильно установил разрешение.Попробуйте открыть свою общедоступную область с помощью другого пользователя и убедитесь, что она работает.
Надеюсь, это поможет.
Быстрое решение Вы можете запустить это один раз в своем симуляторе, чтобы создать глобальное пространство с разрешениями на чтение / запись по умолчанию.
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!")
}
}
}
}
}
Вот серверная функция для написания общедоступной области:
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
},
});
Вставьте код в редактор функций на панели инструментов области и запустите функцию, чтобы создать общедоступную область. Вы можете изменить общедоступную область, изменив свойства в конструкторе областей.