簡體   English   中英

Android Studio Firebase數據庫查詢所選值

[英]Android studio Firebase database queries selected value

我在嘗試查詢數據庫中的某些信息時遇到麻煩,下圖恢復了我要獲取的信息,我正在嘗試獲取“ productId”

這是我的數據庫的樣子:

https://i.stack.imgur.com/JhJNs.png

實際上,我試圖獲得此值以便為其設置條件。 我正在嘗試發送通知,僅當選擇了productId = 02時,這是我的代碼

if (request.getFoods().isEmpty()) {
     Toast.makeText(Cart.this, "Your cart is empty", Toast.LENGTH_SHORT).show();
 } else{

    final DatabaseReference tokens = FirebaseDatabase.getInstance().getReference("Requests");
    final Query data = tokens.orderByChild("productId").equalTo("02"); // get all node with isServerToken
    data.addValueEventListener(new ValueEventListener() {
                                   @Override
                                   public void onDataChange(DataSnapshot dataSnapshot) {

                                           String order_number = String.valueOf(System.currentTimeMillis());
                                           requests.child(order_number).setValue(request);

                                           sendNotificationOrder(order_number);
                                           Toast.makeText(Cart.this, "Notification sent", Toast.LENGTH_SHORT).show();

                                   }
             @Override
             public void onCancelled(DatabaseError databaseError) {

             }
         });

感謝您的幫助!

實際上,您的上述代碼無法與orderByChild()使用。 如果你在你的多個項目foods節點與他們的父節點是01等,並要檢查他們productId ,則僅可以做到這一點。

對於這一點,你就必須讓家長兒童foods和調用orderByChild()就可以了,為productId 代碼看起來像這樣:

final DatabaseReference tokens = FirebaseDatabase.getInstance().getReference("Requests").child(id).child("foods");

   tokens.orderByChild("productId").equalTo("02").addSingleValueEventListener(new ValueEventListener() {
             @Override
             public void onDataChange(DataSnapshot dataSnapshot) {
                  // do what you want



             }
             @Override
             public void onCancelled(DatabaseError databaseError) {
                 // Do something for errors, don't ignore
             }

但是,如果您的數據庫結構具有不同的父節點,並且在它與您要從中檢索數據的節點之間還有一個中間節點,那么上述代碼將無法使用。

在此處了解有關如何使數據庫結構適合orderByChild() 信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM