如何从Firebase数据库中基于值获取数据

时间:2019-06-15 10:29:38

标签: android firebase firebase-realtime-database

我正在尝试根据结构化数据中子“州”中的“付款”获取数据 My Structured firebase

我用了这个

salesRef = FirebaseDatabase.getInstance().getReference()
                .child("Orders")
                .orderByKey().startAt("Payments").endAt("Payments"+"\uf8ff");

但是我什么也没回来。怎么了?我该怎么用?

2 个答案:

答案 0 :(得分:5)

您要按键(例如089630116543等)进行订购,然后说您要键从“付款”开始,到“付款\ uf8ff”结束。没有这样的键,这就是为什么您没有得到任何结果的原因。

我自己还没有使用过Firebase Realtime Database(只是C#中的Firestore,相关但不完全相同)。我怀疑,如果将orderByKey()更改为orderByChild("state")可以解决此问题:

salesRef = FirebaseDatabase.getInstance().getReference()
    .child("Orders")
    .orderByChild("state").startAt("Payments").endAt("Payments\uf8ff");

请注意,这不会在State为“ Waiting Payments Config”的情况下找到值,因为这不是开始。如果您实际上想要一个“包含”类型的查询,那可能会比较棘手(或者不确定,我不确定)。

答案 1 :(得分:4)

您需要执行以下操作:

salesRef = FirebaseDatabase.getInstance().getReference().child("Orders").orderByChild("state").equalTo("Waiting Payments Config");

orderByChild将属性名称作为参数,而equalTo将属性名称作为参数。

检查文档

https://firebase.google.com/docs/database/android/lists-of-data