如何在Firebase中过滤嵌套数据?

我在Firebase数据库中具有以下数据结构。


tripPackages

  -LCoHHZWL-NTLmJKDILV

    50180557210016753

      creationDate:

      farmerID:

      id:

      itemState:

      noOfItems:

      noOfSoldItems:

      totalAmount:

      tripId:

      tvoID:

      vegetableName:

      vid

      weight:

节点trippackages包含包含包裹-LCoHHZWL-NTLmJKDILV的旅程,其中旅程ID和50180557210016753包裹ID。现在,我想用一个特定的itemState(例如IN_TRASIT)过滤所有旅行包。


我相信这段代码应该做到这一点:


firebaseDatabase.getReference().child("tripPackages").orderByChild("itemState").equalTo("IN_TRANSIT");

其中child的值itemState是我的POJO中的一个枚举,但是我无法达到预期的结果。


POJO中child的嵌套位置级别或child的值类型与它有关系吗?


当使用的child的嵌套位置级别orderByChild为2并且child的值为a时,我能够成功过滤相似数据结构中的数据String。


米脂
浏览 126回答 2
2回答

一只斗牛犬

POJO中child的嵌套位置级别或child的值类型与它有关系吗?是的,它会影响。您有此数据库:tripPackages      -LCoHHZWL-NTLmJKDILV            50180557210016753                    itemState: IN_TRANSIT为了能够根据的值进行过滤itemState,请尝试以下操作:firebaseDatabase.getReference().child("tripPackages").child("-LCoHHZWL-NTLmJKDILV").orderByChild("itemState").equalTo("IN_TRANSIT");您需要添加旅行ID,以便能够根据 itemState

白衣非少年

Firebase数据库只能查询特定位置下一级的子级。因此,您可以查询单个行程的包裹(通过查询/tripPackages/-LCoHHZWL-NTLmJKDILV),但不能查询所有行程。典型的解决方案是将软件包存储为列表,并为它们提供行程ID属性,或者存储“按状态分类的软件包ID”的其他列表。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java