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

Faj*_*lah 3 android firebase firebase-realtime-database

我正在尝试根据结构化数据“结构化Firebase”中子级 “ State”中的“ Payments”获取数据

我用这个

salesRef = FirebaseDatabase.getInstance().getReference()
                .child("Orders")
                .orderByKey().startAt("Payments").endAt("Payments"+"\uf8ff");
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 6

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

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

salesRef = FirebaseDatabase.getInstance().getReference()
    .child("Orders")
    .orderByChild("state").startAt("Payments").endAt("Payments\uf8ff");
Run Code Online (Sandbox Code Playgroud)

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


Pet*_*dad 5

您需要执行以下操作:

salesRef = FirebaseDatabase.getInstance().getReference().child("Orders").orderByChild("state").equalTo("Waiting Payments Config");
Run Code Online (Sandbox Code Playgroud)

orderByChild将属性名称作为参数,equalTo并将该属性的值作为参数。

检查文档:

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