我想要的只是那些以字符串' 48DqysTKV0cMGf8orGlfhNaFLEw2'开头的数据。在位置"请求/等待"
但是此代码返回等待节点中的所有数组而不是特定节点
答案 0 :(得分:0)
试试这个(我认为childAdded
中的问题。将其更改为.value
):
let ref = FIRDatabase.database()
.reference(withPath: "request/waiting")
.queryStarting(atValue: "48DqysTKV0cMGf8orGlfhNaFLEw2")
.queryEnding(atValue: "48DqysTKV0cMGf8orGlfhNaFLEw2" + "\u{f8ff}")
ref.observeSingleEvent(of: .value, with: { snapshot in
if let data = snapshot.value as? [String: Any] {
// code..
}
})
上面查询中使用的f8ff字符是Unicode范围内的一个非常高的代码点。因为它是Unicode之后的大多数常规字符,所以查询匹配以48DqysTKV0cMGf8orGlfhNaFLEw2开头的所有值。
希望有所帮助
答案 1 :(得分:0)
原因是因为您正在使用.childAdded
。调用时,最初它会检索给定路径中的每个元素,然后它开始仅监视添加的节点。更多info。
在查询中使用.value
。
queryStarting(atValue)
并不像您认为的那样工作。要实现您的目标,您需要将查询限制在特定范围/边界。阅读不同的query types并自行决定哪种组合有意义。