Firebase不会返回给定记录的数据,即使它存在于db中。
我在firebase中有一些看起来像这样的数据(精确到2条记录),并且符合此结构
{
users : [
SOmeBig0lDID:{
credentials:{
name:"bob"
number:"+10778727737"
}
}
..... other users
]
}
在我的应用中,我要遍历我的联系人列表中的电话号码,并搜索每个号码以识别哪个是用户。当我发出搜索时,我取回了我的一条记录的值,但没有另一条记录的值。
在实现方面,如下所示,我正在等待搜索完成,然后再发布另一个,这是我的代码。我想知道它是否只是损坏的记录,在这种情况下,这也非常令人担忧。
我还100%保证在提交查询以匹配存储在Firebase中的电话号码格式正确。
//get a list of correctly formatted phone numbers up here
func getuser(number:String,count:Int,total:Int){
print("Looking for :" + number+"|")
let usersRef = Database.database().reference().child("users")
let query = usersRef.queryOrdered(byChild: "credentials/number").queryEqual(toValue: number)
query.observeSingleEvent(of: .value, with: { snapshot in
for child in snapshot.children {
let snap = child as! DataSnapshot
var dict = snap.value as! [String: Any]
let creds = dict["credentials"]!
print(creds)
}
if count < total-1 {
getuser(number:finalNumbers[count+1], count:count+1, total:finalNumbers.count)
}
})
}
getuser(number:finalNumbers[0], count:0, total:finalNumbers.count)
我希望获取我查询的号码的记录,但我没有。我已验证我要搜索的号码是实时数据库中的号码,并且已经更改了实时数据库中的号码以完全匹配我看到的客户端发出的号码(但是,对于完整性,我想排除客户端做一些奇怪的编码),但仍然没有返回记录。
奇怪的是,如果我将我不退回的记录号设置为我要退回的记录号,则我都将其退回。 (两个数字字段都具有相同的值)。
如果这是其他人曾经遇到过的较普遍的Firebase问题,请发表评论,我不想使用某种无法始终如一地工作的东西。
任何想法都让我知道,在这个问题上停留了一段时间。