因此,我想检查用户的设备是否在我的列表中(用于测试)。为此,我在Firebase数据集中有少量的值。

看起来像这样:
ios - 带queryEqual值的observeSingleEvent不起作用-LMLPHP

但是,当我尝试检查用户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。

相反,您应该使用queryOrderedByChildqueryOrderedByValue来确保您比较正确的值。

Here is the reference to the firebase docs解释查询(具体来说是queryEqualToValue)如何工作。

关于ios - 带queryEqual值的observeSingleEvent不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49690284/

10-08 22:42