如何解决迅速:MongoDB Realm未同步到移动设备
打开应用程序时,我尝试使用此功能将云数据同步到应用程序
struct AppRootView: View {
@State var homeLink = false // <- add here
@State var loginLink = false
@State private var selection: String? = nil
var body: some View {
NavigationView { // <- wrap in the `NavigationView`
VStack(alignment: .leading) {
Text("App")
.bold()
.font(.largeTitle)
NavigationLink(destination: homeMainView(),tag: "home",selection: $selection) {EmptyView()}
NavigationLink(destination: LoginView(),tag: "login",selection: $selection) {EmptyView()}
}
}
.onAppear(perform: handleSignIn)
.frame(minWidth: 0,maxWidth: .infinity,minHeight: 0,maxHeight: .infinity).background(Color.yellow)
}
func handleSignIn() {
print("HANDLING SIGNING IN")
if let _ = app.currentUser() {
print("USER IS LOGGED IN ALREADY")
self.handleRealmSync()
self.selection = "home" // <- activate the `NavigationLink`
} else {
print("USER NEEDS TO LOGIN")
self.selection = "login"
print("not logged in; present sign in/signup view")
}
}
func handleRealmSync(){
let user = app.currentUser()
let partitionValue = "store=walmart"
Realm.asyncOpen(configuration: user!.configuration(partitionValue: partitionValue),callback: { (maybeRealm,error) in
guard error == nil else {
fatalError("Failed to open realm: \(error!)")
}
guard let realm = maybeRealm else {
fatalError("realm is nil!")
}
// realm opened
print("Realm SYNC IS OPENED")
})
}
}
我得到打印出来的“ Realm SYNC IS OPENED”,但是当我使用此代码查询时,我开始注意到
itemrealm = try! Realm(configuration: user.configuration(partitionValue: partitioningValue)
storeitems = self.itemrealm.objects(Item.self)
查询无法获取我在云集群中拥有的所有东西。
我猜想在我将更多数据导入云之前,同步一直运行良好。我目前在集群中至少有10,000个数据,这些数据被分配了分区值,然后我对storeitems进行了.count计数,并注意到它仅提取了约4,000个项目(这是我导入新数据之前的数量)。因此云无法同步当前数据。
然后我检查了仪表板日志并看到了
点击权限错误显示此消息
错误类型:同步-> SyncSession结束 错误: 结束会话并出现错误:用户无权访问模式指令分区(ProtocolErrorCode = 206)
我的同步权限是
Read : true
Write : {
"%%partition": "%%user.id"
}
用户可以读取所有数据,但只能写入自己的数据
如何解决权限错误并将最新的群集同步到移动客户端?
当我将写权限切换为
时 "%%user.id": "%%partition"
这是我得到的错误
严重错误:无法打开领域:错误Domain = io.realm.unknown Code = 208“错误的客户端文件标识符(IDENT)” UserInfo = {Category = realm :: sync :: ProtocolError,NSLocalizedDescription =错误的客户端文件标识符(IDENT),错误代码= 208}:
解决方法
您的写权限是向后的。
而不是这个问题(来自问题)
Read : true
Write : {
"%%partition": "%%user.id"
}
执行此操作
Read : true
Write : {
"%%user.id": "%%partition"
}
该信息来自MongoDB Realm Sync文档Define Sync Rules
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。