首页 > 解决方案 > 数据未能从 firebase [swift] 返回

问题描述

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 问题,请发表评论,我不想使用无法始终如一地工作的东西。

任何想法让我知道,在这个问题上停留了一段时间。

标签: swiftfirebase

解决方案


推荐阅读