迅速: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个项目(这是我导入新数据之前的数量)。因此云无法同步当前数据。

然后我检查了仪表板日志并看到了

enter image description here

点击权限错误显示此消息

错误类型:同步-> 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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...