无法使用 mongodb 同步打开 Realm

2023-12-06

我无法打开领域。我的设置有问题。这是应用程序中的代码:

var configuration = user.configuration(partitionValue: "user=\(user.id)")
configuration.objectTypes = [User.self]
Realm.asyncOpen(configuration: configuration) { [weak self](userRealm, error) in
                self!.setLoading(false);
                guard error == nil else {
                    fatalError("Failed to open realm: \(error!)").   ///// here was my error before the edit (I changed the Permission Settings in Sync)
                }

错误代码:“致命错误:无法打开领域:错误域=io.realm.unknown代码=89“操作已取消”UserInfo={Category=realm.basic_system,NSLocalizedDescription=操作已取消,错误代码=89”

Mongodb 同步配置的屏幕截图

Screenshot of Mongodb Sync configuration

编辑: 将同步中的权限设置替换为任务跟踪器应用程序中提到的权限设置并使其连接:

enter image description here

编辑:根据 Jay 的建议,配置设置已更改为以下内容。

var configuration = user.configuration(partitionValue: "\(currentUser.id!)")

这是我对用户集合的方案定义:

{
"properties": {
"_id": {
  "bsonType": "string"
},
"_partition": {
  "bsonType": "string"
},
"name": {
  "bsonType": "string"
}
},
"required": [
   "_id",
   "_partition",
   "name"
],
"title": "User"
}

这是我在 Xcode 中的 User 类:

class User: Object {
@objc dynamic var _id: String = ""
@objc dynamic var _partition: String = ""
@objc dynamic var name: String = ""
override static func primaryKey() -> String? {
    return "_id"
}
}

编辑:我将通过更新同步权限来建立连接,因此应用程序不会再崩溃。然而,现在我收到这样的消息:

Connection to daemon was invalidated
Signup successful!
Log in as user: y
Login succeeded!
2020-10-25...Sync: Connection[1]: Session[1]: client_reset_config = false, Realm exists = false, async open = false, client reset = falseSync: Connection[1]: Session[1]: client_reset_config = false, Realm exists = false, async open = false, client reset = false
2020-10-25...Sync: Connection[1]: Connected to endpoint '13.54.209.90:443' (from '.....:52139')
2020-10-25...Sync: Connection[1]: Reading failed: End of input
2020-10-25...Sync: Connection[1]: Connection closed due to error```

我不明白上面的代码中的错误“(“无法打开领域:(错误!)”)”没有被触发,但在日志中它说该领域不存在!那么,这是怎么回事?

编辑:这是 mongodb 中的用户表,所以我成功创建了一些用户。

enter image description here

编辑:这是来自 mongodb 的日志

enter image description here

我们可以看到用户 ID 和请求 ID 不一样!我想这两个ID应该是相同的字符串才能进行身份验证,对吗?

我正在按照 Swift 的 mongodb 网页上的任务跟踪器应用程序教程将用户登录添加到我的应用程序。我在这里缺少什么?


完全猜测,您的配置字符串不正确

var configuration = user.configuration(partitionValue: "user=\(user.id)")

由于分区值解析为

partitionValue: user=Optional("5f1b586f757611faec257d88")

Try this

guard let user = your_app.currentUser() else {
    print("no user")
    return
}

guard let userId = user.id else {
    print("no user")
    return
}

var configuration = user.configuration(partitionValue: "user=\(userId)")

更重要的是,您尝试使用的分区值是这个字符串

user=5f1b586f757611faec257d88

我认为你真正想要的是使用用户 ID

5f1b586f757611faec257d88

这就是我要开始的地方。如果你想利用领域规则,那么类似_partitionKey: "team_id=1234"会起作用,但这超出了原始问题的范围(并增加了另一层复杂性 - 首先让它工作,然后探索规则)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 mongodb 同步打开 Realm 的相关文章

随机推荐

  • Java:检查命令行参数是否为空

    我希望对我的命令行参数进行一些错误检查 public static void main String args if args 0 null System out println Proper Usage is java program f
  • 在 MASM 中调用 C++ 函数

    我正在开发一个程序 该程序将使用 MASM 调用一些 C 函数 我在一个单独的文件中定义了对 2 个整数求和并显示输出 目前 我无法运行 main cpp asmMain 从 main cpp 调用函数 code asm promptFir
  • MapReduce java.lang.ArrayIndexOutOfBoundsException:0

    我尝试在 Java 中运行 MapReduce 但出现此错误 Exception in thread main java lang ArrayIndexOutOfBoundsException 0 at com mapreduce Word
  • 为什么系统调用不起作用?

    我在 MAC OSX 上 我试图通过程序集调用 execve 系统调用 他的操作码是 59 在linux中 我必须将操作码设置到eax中 然后将参数设置到其他寄存器中 但在这里我必须将操作码放入eax中 并将参数从右到左压入堆栈 所以我需要
  • cocos2d:将 iPhone 应用程序转换为通用应用程序

    我使用 cocos2d box2d 项目模板在 cocos2d 99 4 中开发了一个 App 应用程序 它在 iPhone 4 iPod 中运行良好 但我需要它转换为通用 我的意思是 iPad 版本也 我已经将其升级到iPad版本 以便它
  • 有没有一种方法可以处理模板函数的未定义引用错误,而无需在标头中实现它们?

    我希望问题已经清楚了 是否有另一种方法可以在不在头文件中实现模板函数的情况下避免出现未定义的引用错误 提前致谢 Marshall Cline 的 C FAQ 已经处理了这个问题 一种方法是使用export但我真的不建议使用它 因为并非所有编
  • 如何隐藏 iAD

    我想问以下问题 1 当用户点击空白屏幕时如何隐藏iAD 2 如何识别不活动状态 即用户是否打开了某个应用程序 然后离开了 iPhone 然后应用程序保持打开状态 Update 你可以做类似下面代码的事情 void bannerViewDid
  • QUiLoader:使用自定义小部件加载 .ui 文件的要求?

    我使用 Qt5 Designer 创建了一个 UI 我通过调用在运行时加载它 QUiLoader load qfile object this 就像魅力一样 但现在我推广了一些QLabel小部件类的元素MyQLabel与 源自QLabel
  • 如何使用 JAXB 通过 Jersey 1.17.1 生成 JSON 输出

    这个问题已经在这个网站上有一个正确的答案 问题是问题是泽西岛 1 6 and 泽西岛 1 17 1 的正确答案被埋在底部 我想我应该为此答案创建一个正确的问题 以便为遇到此问题的人 就像我一样 更容易找到帮助 首先 您需要将其添加到您的 w
  • Windows下的Services能做什么?

    有谁有关于 XP 下 Windows 服务功能的良好指南吗 特别是 我试图找出当作为服务运行的程序尝试打开窗口但未获得与桌面交互的权限时会发生什么 基本上 我有一个程序是一个 GUI 应用程序 它应该能够作为长期后台处理的服务运行 重写程序
  • 我当前正在合并哪些提交?

    当我执行时git merge 尚未创建新的提交 由于冲突或 no commit选项 如何检查我正在合并哪个分支 git status仅显示当前分支 A git merge that has stopped due to conflicts
  • 为什么以可变对象作为身份在并行流中调用reduce方法不会保留结果中的顺序?

    有以下看似 正确 的代码 List
  • CSS 字体大小的夹紧()公式

    我试图了解该工具如何计算出 lamp 函数的第二个参数 https fluid typography netlify app 有人能解释一下那部分吗 我理解第一个和第三个参数 因为它们非常不言自明 这是令人困惑的第二个参数 最小尺寸1 5r
  • 使用 DataTable.RowFilter 按日期过滤,同时忽略时间

    如何过滤数据表中特定日期的记录 我试过简单的 datecol 11 March 2010 and CONVERT datecol System DateTime 11 March 2010 没有运气 MSDN RowFilter 表达式语法
  • 使用方法而不是函数有什么好处吗?

    我正在开发 Matrix 结构体和相关方法 目的是为了练习 Go 我做了很多方法 但我意识到所有这些方法都可以变成函数 我习惯了C 在C 中 如果我创建一个参数是类类型的函数 则该函数不能使用该类的私有变量 信息隐藏 但是 当我使用 Go
  • 如何将 pdfstamper 转换为字节数组

    在我的应用程序中 我需要读取现有的 pdf 并将条形码添加到现有的 PDF 并将其传递到输出流 这里现有的 pdf 就像模板 我正在使用 iText jar 添加条形码 我想知道转换的可能性PdfStamper对象到字节数组或PdfCont
  • 在 Android 应用程序中创建 Facebook 事件

    我是安卓新手 我只想create我要开发的应用程序中的 Facebook 活动 稍后我会添加邀请好友的功能 我想以通知或任何好的方式显示邀请 我在互联网上做了很多研究 但找不到解决方案 我真的很感激任何解决方案 谢谢你 package co
  • 将文件复制到同一目录中的多个文件夹

    我有一个文件 我们将其命名为 Examples DBF 该文件的位置是C EXAMPLE DBF 现在我想将此文件复制到另一个位置的多个文件夹中 这些文件夹是dated子目录 因此它们被命名为 20140101 20141231 它们的位置
  • 打开和关闭其他 UIViewController - 除了使用协议和委托之外还有其他方法吗?

    从 FirstVC 屏幕中打开另一个屏幕 以便可以再次关闭它的正常方法如下 SecondVC secondVC SecondVC alloc initWithNibName SecondVC bundle nil secondVC dele
  • 无法使用 mongodb 同步打开 Realm

    我无法打开领域 我的设置有问题 这是应用程序中的代码 var configuration user configuration partitionValue user user id configuration objectTypes Us