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