【问题标题】:Firebase Query: equalTo on a listFirebase 查询:列表中的 equalTo
【发布时间】:2015-04-23 15:06:58
【问题描述】:

我们正在构建一个需要将手机联系人与已在该应用上注册的人同步的 Android 应用。我们正在使用火力基地

为此,我们希望根据他们的电话号码检索现有用户的列表。

我已经设法使用 ref.orderByChild("phone").equalTo($phoneNumber) 根据他们的电话号码检索用户

但我想知道是否有一种方法可以传递电话号码列表,而不是一次查询每个电话号码? 像这样的东西: ref.orderByChild("phone").isIn([phone1, phone2, phone3])

我刚刚开始学习 Firebase,但我喜欢这个概念 :) 非常感谢您的回答!

【问题讨论】:

    标签: android firebase


    【解决方案1】:

    Firebase 在其查询中没有 orin 运算符。

    您可以使用startAtendAt 函数提供最接近的选择范围。但这不适用于您的用例。

    通常,当人们要求进行此类操作时,他们试图在查询中组合的所有部分之间存在关系。例如,在您的情况下,用例可能类似于:“获取用户通讯录中所有联系人的姓名”。

    在这种情况下有几个选择:

    1. 通过单独的查询监控每个联系人
    2. 将每个联系人的必要元数据嵌入到用户的通讯录中

    选项 2 是获取信息最便宜的方式,因为您只需要阅读通讯录即可。但这是以数据重复为代价的,而更多受过相关培训的开发人员不习惯这样做。请参阅此答案以了解此类非规范化的 coughcough 示例:Firebase data structure and url

    选项 1 并不像您预期​​的那么昂贵,因为 Firebase 只会打开一次套接字连接,然后在同一连接上执行所有其他查询。

    【讨论】:

    • 非常感谢您的回答,这很清楚 :) 我以前使用过 MongoDB,这样的查询是可能的,这就是我问的原因,但我会使用你的解决方案之一!也许将来会出现新的查询运算符:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2017-07-31
    • 2016-06-03
    • 2019-05-31
    相关资源
    最近更新 更多