为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米脂 2021-04-02 14:08:07
我在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。
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超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


查看完整回答
反对 回复 2021-04-21
?
白衣非少年

TA贡献1155条经验 获得超0个赞

Firebase数据库只能查询特定位置下一级的子级。因此,您可以查询单个行程的包裹(通过查询/tripPackages/-LCoHHZWL-NTLmJKDILV),但不能查询所有行程。

典型的解决方案是将软件包存储为列表,并为它们提供行程ID属性,或者存储“按状态分类的软件包ID”的其他列表。


查看完整回答
反对 回复 2021-04-21
  • 2 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信