使用多个filter从Firebase查询数据
我有一个称为products
的Firebase数组,其中包含以下项目:
JhMIecX5K47gt0VaoQN: { brand: "Esprit" category: "Clothes", gender: "Boys", name: "Pants", }
是否可以使用Firebase API使用多个filter查询此arrays中的产品。 例如,我可能希望按brand
和category
进行过滤(所有“裤子”均为“Esprit”)。 到目前为止,我已尝试通过子键进行排序,然后限制此排序的开始和结束,但我无法弄清楚如何应用更多filter。
我正在使用iOS SDK。
Firebase一次只能对一个属性(或值)进行排序/过滤。 如果在单个查询中多次调用orderBy...
方法,则会引发错误以指示不允许这样做。
实际上,在Firebase中,当您按特定键进行排序时,还会涉及另一个索引:推送ID(如果您使用它们)它们几乎按时间顺序排序,因此您可以按字段XXX加上时间进行排序。
更多细节在这里
在您的情况下,这不是时间,所以唯一的解决方案是使用其他复合索引:
JhMIecX5K47gt0VaoQN: { brand: "Esprit" category: "Clothes", brandcategoryIndex: "EspritClothes", categorybrandIndex: "ClothesEsprit", brandnameIndex: "EspritPants", namebrandIndex: "PantsEsprit", gender: "Boys", name: "Pants", }
在上面的示例中,您可以通过以下方式查询:
- 类别>品牌(和其他方式)
- 名称>品牌(和其他方式)
只需确保将这些字段添加到规则部分的Firebase索引中,并在项目修改时随时保留这些字段。
(这种在性能上增加冗余数据成本的过程,在这种情况下由Firebase强制执行,称为非规范化 )
- 解决“'NSUnknownKeyException',原因:这个类不是密钥X的编码兼容的键值”exception
- 如何在CGAffineTransformIdentity时调整UIView的大小
- 如何在快速编程中解决这个EXC_BAD_ACCESS(code = EXC_i386_GPFLT)
- 沿着上次更新的GPS坐标Swift iOS平滑移动和旋转GMSMarker
- 在转换到SpriteKit中的另一个SKScene之后取消分配SKScene
- 使用Adobe Flex Builder构buildiOS应用程序 – 性能问题
- GPS和iOS和Android上的位置
- 检查MKPolyline是否与MKPolygon相交
- 我是否需要iOS设备来“存档”Xcode项目?