繁体   English   中英

查询Firebase iOS的最有效方法

[英]Most Efficient Way to Query Firebase iOS

我正在开发一个使用用户位置并使用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”
      • 邮编:“ 12345”
      • 状态:“ XX”
    • “ 2”
      • 邮编:“ 12345”
      • 状态:“ XX”

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM