我们正在构建一个Android应用程序,需要将手机联系人与已在应用程序上注册的人员同步。我们正在使用firebase
为此,我们希望根据电话号码检索现有用户列表。
我已经设法使用ref.orderByChild(“phone”)根据他们的电话号码检索用户.equalTo($ phoneNumber)
但我想知道是否有办法传递电话号码列表,而不是一次查询每个电话号码? 像这样的东西: ref.orderByChild(“phone”)。isIn([phone1,phone2,phone3])
我刚刚开始学习Firebase,但我喜欢这个概念:) 非常感谢您的回答!
答案 0 :(得分:1)
Firebase的查询中没有or
或in
个运算符。
您可以使用startAt
和endAt
函数最近的一个选择范围。但这不适用于您的用例。
通常,当人们要求进行此类操作时,他们尝试在查询中组合的所有部分之间存在关联。例如,在您的情况下,用例可能类似于:“获取用户地址簿中所有联系人的姓名”。
在这种情况下,有几个选择:
选项2是获取信息的最便宜方式,因为您只需要阅读地址簿。但它的代价是数据重复,而更多受过关系培训的开发人员并未使用。请参阅此答案,了解咳嗽 咳嗽这种非规范化的例子:Firebase data structure and url
选项1并不像您预期的那么昂贵,因为Firebase只会打开一次套接字连接,然后通过同一个连接执行所有其他查询。