所以,我想检查用户的设备是否在我的列表中(用于测试)。为此,我在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,则此查询正在运行。
我做错了什么?
更新:我想澄清一下我遇到的问题。我没有任何结果,快照为空。同时,如果我使用的是queryLimited(toFirst: 1)
而不是queryEqual
,我会从表中获得一个结果。在我看来,它不是关于快照问题,而是关于查询而没有任何结果。
答案 0 :(得分:2)
您使用了错误的OrderedBy
方法。因为您正在使用queryOrderedByKey
,所以queryEqual
函数会检查它是否等于Key,同时您要将其与Value进行比较。
相反,您应该使用queryOrderedByChild
或queryOrderedByValue
来确保比较正确的值。
Here is the reference to the firebase docs解释了查询(特别是您的案例中queryEqualToValue
)的工作方式。