查询Firebase iOS最有效的方法

时间:2016-11-23 16:50:03

标签: ios swift firebase firebase-realtime-database

我正在开发一个应用程序,该应用程序将使用用户的位置并使用URL中的邮政编码执行Web请求。这相当快,通常需要1-3秒。我即将发布应用程序,但阅读使用条款,并且无法在我的应用程序中使用他们的服务。我已经下载了一个77k行的邮政编码电子表格,将其转换为JSON,并将其上传到Firebase。我目前正在我的应用程序中查询Firebase以搜索邮政编码,但现在大约需要10-15秒。我的代码如下:

    func firebaseSearch(zipCode: String) {
    let conditionRef = FIRDatabase.database().reference().child("locations")

    let query = conditionRef.queryOrderedByChild("zip").queryEqualToValue(zipCode)

    query.observeEventType(.Value, withBlock: { snapshot in

        for child in snapshot.children {
            print(child.value["state"])

        }

    })

    }

我的firebase结构如下:

  • “位置”
    • “1”
      • zip:“12345”
      • 州:“XX”
    • “2”
      • zip:“12345”
      • 州:“XX”

我试图考虑如何构建Firebase以提高效率,例如让状态成为父级,内部有子条目。我想将所有条目上传为邮政编码;但是,我的电子表格中有太多重复的代码,我知道firebase不允许重复。有没有更有效的方法来查询firebase?如果我从第一个邮政编码开始输入条目号(当前从1开始到77k开始),然后我从邮政编码中查询+/-值,然后过滤这些结果怎么办?我唯一担心的是,查看最后一个邮政编码,条目号码与实际邮政编码相差约20k。我感谢任何提示/建议,谢谢!

1 个答案:

答案 0 :(得分:0)

Firebase建议避免嵌套数据,据我所知,您的结构良好,因为当您在某个位置获取数据时,它也会检索其所有子节点。如何在应用中显示数据?

您是否可以先使用分页查询25个项目,然后加载下一个25项,依此类推?

query.limitToLast(25).observeEventType(.Value, withBlock: { snapshot in ...