【发布时间】:2017-05-02 07:25:12
【问题描述】:
我是编码新手,刚开始使用 Firebase,我正在运行以下函数,它基本上试图创建 2 个节点,“锦标赛”和“每日游戏”(如果它们不存在的话)。
数据库树应如下所示:
-London
-City Game
-Date(stringDate) // getting this from another function, returns 2016-16-12
-Tournaments
-Daily Games
代码如下所示:
func createTournamentsAndNonTournamentsNodes() {
let databaseRef = FIRDatabase.database().reference()
self.getLiveTimestamp() // this calls a function that returns timestamp
databaseRef.child("London/City Game/\(stringDate)").observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.hasChild("Daily Games") {
print ("Daily Games node exists already")
print(snapshot.key)
print(snapshot.value as Any)
} else {
print ("Daily Games dont exist, creating it now")
let postTwo : [String : AnyObject] = [("Daily Games") : "Initiated today at : \(self.timeStampString)" as AnyObject]
databaseRef.child("London/City Game/\(stringDate)").child("Daily Games").updateChildValues(postTwo)
}
if snapshot.hasChild("Tournaments") {
print ("Tournaments node exists already")
print(snapshot.key)
print(snapshot.value as Any)
} else {
print ("Tournaments dont exist, creating it now")
let postOne : [String : AnyObject] = [("Tournaments") : "Initiated today at : \(self.timeStampString)" as AnyObject]
databaseRef.child("London/City Game/\(stringDate)").child("Tournaments").updateChildValues(postOne)
}
})
}
所以在空数据库上运行上面的结果是控制台打印“每日游戏节点已存在”和“锦标赛节点已存在”,键和值如下。但问题是这些是我在 1 小时前的一次运行中创建的,并立即从 Firebase Web 控制台手动删除,以测试代码,使我的数据库在再次运行代码之前完全为空。因此,重新加载 Firebase 控制台会显示一个空数据库,但我的代码会将其打印出来,就好像数据存在于数据库中一样。这怎么可能?尽管在 Web 控制台上显示为空,Firebase 是否会保留数据一段时间?
Optional({
"Daily Games" = "Initiated today at : 13:01:19";
Tournaments = {
Tournaments = "Initiated today at : 13:05:22";
};
})
我做错了什么?如果我的代码向我显示一个填充的数据库,但我的 Web 控制台向我显示一个空的数据库,如何真正分辨数据库中的内容和内容?非常感谢
更新:
我有 FIRDatabase.database().persistenceEnabled = true 并且还在真实设备上运行它。禁用persistenceEnabled后,它工作得非常好。在不禁用persistenceEnabled的情况下解决此问题的方法是什么?
【问题讨论】:
标签: ios swift xcode firebase firebase-realtime-database