因此,我想检查用户的设备是否在我的列表中(用于测试)。为此,我在Firebase数据集中有少量的值。
看起来像这样:
但是,当我尝试检查用户ID是否在此列表中时,什么也没得到。
let childString = "tempfreeuuid/"
let pointref = ref.child(childString)
let query = pointref.queryOrderedByKey().queryEqual(toValue: "FFFFF")
query.observeSingleEvent(of: DataEventType.value) { (snapshot) in
if snapshot.hasChildren() {
print("that's good")
} else {
print("snapshot has no children")
}
}
结果是“快照没有孩子”。
我已经尝试过
query.observeSingleEvent(of: .childAdded)
(不起作用),.queryLimited(toFirst: 3)
和.queryOrderedByKey()
-这两个都不起作用。同时,如果我不尝试使用queryEqual,则此查询有效。
我究竟做错了什么?
更新:我想澄清我遇到的问题。我没有任何结果,快照为null。同时,如果我使用的是
queryLimited(toFirst: 1)
而不是queryEqual
,我将从表中得到一个要使用的结果。在我看来,这与快照问题无关,而与没有任何结果的查询有关。 最佳答案
您使用了错误的OrderedBy
方法。因为您使用的是queryOrderedByKey
,所以queryEqual
函数将在您想将其与Value进行比较时检查其是否等于Key。
相反,您应该使用queryOrderedByChild
或queryOrderedByValue
来确保您比较正确的值。
Here is the reference to the firebase docs解释查询(具体来说是queryEqualToValue
)如何工作。
关于ios - 带queryEqual值的observeSingleEvent不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49690284/