【发布时间】:2020-07-21 19:19:21
【问题描述】:
我不知道我做错了什么。我正在尝试从我的 MongoDB 领域云同步到本地数据库以供访问。
我正在遵循此说明 https://docs.mongodb.com/realm/ios/sync-data/#ios-sync-data
这是我的 mongoDB Realm 屏幕截图。它显示了我想与partioningKey同步的项目。
这是我的代码
override func viewDidLoad() {
super.viewDidLoad()
fetchStoreItems()
}
func fetchStoreItems(){
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
// All tasks in the realm
let storeItems = maybeRealm!.objects(Item.self)
let tasksThatBeginWithA = storeItems.filter("name beginsWith 'R'")
print("these are the item amount", tasksThatBeginWithA.count)
})
}
身份验证工作正常,但获取数据返回空并显示此消息
同步:Connection2:Session2:client_reset_config = false,领域存在 = true,异步打开 = false,客户端重置 = false
我做错了什么,我该如何解决?
【问题讨论】:
-
这里可能存在许多问题。首先,这是危险的
Realm.asyncOpen(configuration: user!请处理可选项,就好像它们可以为 nil 一样来保护您的代码。此外,此app.currentUser()可能无法正确解析。此let partitionValue = "store=walmart"可能与您的 Realm 应用程序控制台中的分区键不匹配 - 请仔细检查。请在保护后使用realm而不是maybeRealm!。你是说let storeItems是零吗?