2 回答
TA贡献1863条经验 获得超2个赞
不幸的是,Firebase Realtime数据库不支持对多个属性的查询,仅支持对单个子属性的查询。因此,您猜测需要创建一个额外的字段来保留这两个字段是正确的。因此,要实现此目的,您需要创建一个新字段,该字段在数据库中应如下所示:
Firebase-root
|
--- itemId
|
--- a: valueOfA
|
--- b: valueOfB
|
--- a_b: valueOfA_valueOfB
如您所见,该a_b属性组合了要过滤的值。
与Firebase Realtime数据库不同,Cloud Firestore允许复合查询。您应该看看这个。因此,在Cloud Firestore中允许进行以下查询,而无需创建组合属性。
itemIdRef.whereEqualTo("a", "valueOfA").whereEqualTo("b", "valueOfB");
当您订购字符串时,这是正常的订购方法。速战速决会是这样每一秒元素前加两个零:"1516428687_001","1516428687_002","1516428687_012"。现在您的订单就可以了。有关更多说明,请参阅我在这篇文章中的回答。
TA贡献1798条经验 获得超7个赞
我考虑了-但是在实践中它是行不通的,因为正如我猜测firebase内部使用标准的字符串比较器,所以三个键的顺序将遵循 "1516428687_1", "1516428687_12", "1516428687_2"。但是我需要"1516428687_1", "1516428687_2", "1516428687_12"。
- 2 回答
- 0 关注
- 475 浏览
添加回答
举报