查询 Firebase iOS 的最有效方法

Posted

技术标签:

【中文标题】查询 Firebase iOS 的最有效方法【英文标题】:Most Efficient Way to Query Firebase iOS 【发布时间】:2016-11-23 16:50:03 【问题描述】:

我正在开发一个应用程序,该应用程序将使用用户的位置并使用 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。我感谢任何提示/建议,谢谢!

【问题讨论】:

【参考方案1】:

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

你能不能先用分页来查询 25 个项目,然后加载接下来的 25 个项目,以此类推?

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

【讨论】:

感谢您的回复!我将如何使用分页?我以为 limitToLast 只使用了最后 25 个条目?不过我是firebase的新手,所以我不太确定。再次感谢! 我建议您查看这篇文章以进行分页 (***.com/questions/37144030/…),因为它对我也有帮助。

以上是关于查询 Firebase iOS 的最有效方法的主要内容,如果未能解决你的问题,请参考以下文章

通过查询生成以下has_many的最有效方法是啥

根据用户是不是关注帖子来获取帖子查询的最有效方法

修改 Eloquent 查询以使其始终返回空集合的最有效方法是啥?

使用 SQL 查询时,对我的网站进行分页的最有效方法是啥?

Django:查询多条记录的最有效方法?

将 Access 2003 列表框行源(查询)导出到 Excel 2003 的最有效方法