【发布时间】:2018-02-28 14:15:23
【问题描述】:
所以我的根数据库中有两个子部分,users 和 userSelfies
我使用 users 部分来存储头像的 id,而 userSelfies 部分用来存储实际的下载链接。 我做了一个通用函数来从数据库中的任何路径检索数据。它看起来像这样:
static func getDatabaseEntry(path: String, key: String, completionHandler: @escaping (_ return: AnyObject?, _ error: String?) -> Void) {
databaseReference.child(path).observeSingleEvent(of: .value, with: { (snapshot) in
//print("snapshot: ", snapshot)
dump((snapshot.value as? [String: AnyObject]))
if let value = (snapshot.value as? [String: AnyObject])?[key] {
print("unwrapped snapshot dict value from key: ", value)
completionHandler(value, nil)
}else{
print("no value for key \(key) so setting return as nil")
completionHandler(nil, nil)
}
}) { (error) in
print(error.localizedDescription)
completionHandler(nil, error.localizedDescription)
}
}
现在由于一些奇怪的原因,在数据库的“用户”部分使用此函数时,它按预期返回,延迟了几毫秒。然而,当使用这个完全相同的函数和不同的路径参数导致 userSelfies 下载链接时,该函数返回 nil。我已经在快照上尝试了 dump(),我手动尝试找到自拍 ID 密钥。它返回所有数据库条目的字典,除了最近的(或任何最近的)条目。然后我在网站上检查以确保数据确实存在于数据库中,重新加载页面,果然它在那里。
这意味着 Firebase SDK observeSingleEvent 一定是问题所在。但是,我只是无法弄清楚为什么它会为数据库的一个部分工作和快速更新,而不是另一部分。实际上,用户部分包含更多信息并且更大!那么,如果有什么应该更慢的呢?发生这种情况有什么原因吗?
【问题讨论】:
-
请有人帮助我已经尝试了 12 个小时的一切......我什至尝试切换到正常观察并移除手柄,但无法移除手柄 firebase 似乎坏了
标签: swift firebase firebase-realtime-database