Firebase 查询以在 iOS swift 中通过用户 ID 获取特定用户
Posted
技术标签:
【中文标题】Firebase 查询以在 iOS swift 中通过用户 ID 获取特定用户【英文标题】:Firebase query to fetch specific users by their user IDs in iOS swift 【发布时间】:2017-05-17 14:57:20 【问题描述】:我有一个这样的 firebase 数据库结构
"Users":
"ghjghjFc1S3KO0y8yJwORdfgret": //user ID
"name": "John"
"3uqWZJRFc1S3KO0y8yJwORTMtWC2": //user ID
"name": "Smith"
"4SrHGdRFc1S8KO0y8yJwORTMtQAR": //user ID
"name": "Alan"
"5fvxhaxFc1S8Kf0ygyJwORyMtFdy": //user ID
"name": "Ben"
我有一个数组:usersToRetreive = ["5fvxhaxFc1S8Kf0ygyJwORyMtFdy", "3uqWZJRFc1S3KO0y8yJwORTMtWC2"]
我只想检索那些用户 ID 在数组“usersToRetreive”中给出的用户
firebase 是否支持这种类型的查询?如果是,那么我该如何快速进行此查询?
【问题讨论】:
也许在添加新问题之前先从谷歌搜索开始? 我没有找到答案,这就是我在这里发帖的原因。 【参考方案1】:是的,Firebase 确实支持这种类型的查询。您必须在数据库引用上使用 orderByChild() 方法。这个 Firebase Youtube 视频介绍了如何做到这一点。
Common SQL Queries converted for the Firebase Database - The Firebase Database For SQL Developers #4
【讨论】:
感谢 Philip 分享此视频非常有帮助,但我找不到问题的解决方案。我只想将一组用户 ID 提供给 firebase,它会将过滤后的用户返回给我。我想避免在客户端出现长循环。【参考方案2】:据我所知,您正在尝试获取特定用户的所有信息,这些信息在您的 Arraylist 中由他们的 ID 号给出。
首先这种数据映射结构无法与firebase竞争。没有具体的简单方法可以做到这一点。如果您获取所有数据然后在本地搜索,那将非常昂贵。如果您使用这种方式,您可以复制写有他们的 ID 号的用户的信息.. 因为 100 万个字符将花费大约 2MB .. Firebase 中重要的是您如何使用 TRAFFIC。不是内存。 您也可以使用 Firebase BIGDATA 查询。
【讨论】:
【参考方案3】:只需对数组执行 for 循环并分别获取每个用户,看不出有什么大问题..
【讨论】:
因此,如果该数组中有 1000 个 ID,那么它将调用 firebase 1000 次来获取该用户。这是好习惯吗? 是的,没关系。如果您担心,那么只需获取所有用户并在客户端过滤列表。 这是最简单但不好的方法(想象一下如果用户数以百万计或数组包含数千个 ID)。我在想应该有一种有效的方法来做到这一点。以上是关于Firebase 查询以在 iOS swift 中通过用户 ID 获取特定用户的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift:查询完成后将数据传递给其他 VC 的最佳方式
(Swift) 如果我的节点是自定义索引的,如何只查询当前用户的实时数据的快照?
Firebase queryEqualToValue 在 Swift 2.3 中获取密钥