要检查没有数据(快照 == NULL),这样做是这样的
let refToCheck = myRootRef.childByAppendingPath(channelNameString)
refToCheck.observeEventType(.Value, withBlock: { snapshot in
if snapshot.value is NSNull {
print("snapshot was NULL")
} else {
print(snapshot)
}
})
与 .observeEventType 相比,查询非常繁重,而且由于您已经知道要检查的特定路径,因此它的性能会更好。
编辑:你也可以使用
if snapshot.exists() { ... }
当您想要检索包含特定值或值范围的子节点时,最好使用 Firebase 查询。
为 Firebase 3.x 和 Swift 3.x 编辑
let refToCheck = myRootRef.child(channelNameString)
refToCheck.observe(.value, with: { snapshot in
if snapshot.exists() {
print("found the node")
} else {
print("node doesn't exist")
}
})
注 1) 逻辑有所改变,因为我们现在利用 .exists 来测试快照是否存在。
注 2)这段代码让观察者在 Firebase 中处于活动状态,因此如果稍后创建节点,它将触发。
如果您想检查一个节点并且不想让观察者监视该节点,请执行以下操作:
let refToCheck = myRootRef.child(channelNameString)
refToCheck.observeSingleEvent(of: .value, with: { snapshot in
if snapshot.exists() {
print("found the node")
} else {
print("node doesn't exist")
}
})