我试图检索特定孩子的内部列表。请参考以下结构。
如果我想检索" servicesArrayList"为"收件人"在哪里" billNo"是" 135",我应该写什么查询,以便我可以将该查询传递给FirebaseRecyclerAdapter(firebase -ui)
FirebaseRecyclerAdapter用于特定收件人的servicesArrayList。
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String uid = user.getUid();
Query query = FirebaseDatabase.getInstance()
.getReference(RECIPIENT_NODE)
.child(uid)
.child("servicesArrayList")
.orderByChild ?
recipient // parent Node
2R1Q8qKEPHXFU1OiMq5TyxHBaZa2 // uId
-KgJhMAWADwownv5tck6 // push Id
-KgJhMAWADwownv5tck6
-KgJoD77HQK-yACD_EuB
-KgJoRXVUP_-Z0gLhIWy
-KgJob82t47PvTjfTtig
-KgK-N_Av_2kmmQS0Ulx
-KgNu-fVWwFDLnRENj_b // Recipient Data
billNo: 135
billingMonth: "July 2017"
childGender: "Ms."
childName: "xyz"
date: "29/03/2017"
fineAmount: 0
paymentStatus: "UNPAID"
pushId: "-KgNu-fVWwFDLnRENj_b"
receiptUrl:"https://firebasestorage.googleapis.com/v0/b/ngf..."
recipientEmail: "abc@gmail.com"
recipientName: "Abc C."
servicesArrayList
-0
-amount: 1000
-charges: "1000"
-noOfSessions: 1
-serviceType: "Speech And Language Assessment"
total: 1000
vat: 0
答案 0 :(得分:1)
尝试这个:
Query query = FirebaseDatabase.getInstance()
.getReference(RECIPIENT_NODE)
.child(uid).orderByChild("billNo").equalTo(135);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Query query1= dataSnapshot.getRef().child("servicesArrayList");
//pass this query to adapter of firebaseRecyclerAdapter
FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<>(,,,query1){}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// ...
}
});
答案 1 :(得分:1)
如果你知道uid和push id,那么应该这样做:
Query query = FirebaseDatabase.getInstance().getReference(RECIPIENT_NODE)
.child(uid).child(pushId).child("servicesArrayList");
希望这有帮助