簡體   English   中英

getChildren 在特定鍵下計數 Firebase,其中存在特定值

[英]getChildren count in Firebase under a specific key, where a particular value exists

我如何在 Java 中實現這一點,我按照以下格式設置我的數據庫,在通知下我有一個孩子設置了一個由 Firebase 生成的隨機密鑰然后我有其他孩子如下。

Notification ----
     dhsj37egshehhdeh----
        name - john
        userid - 939jjddehhd
        status - unread
     347747dhhshhdeh3----
        name - doe
        userid - 956jj53hdhhd
        status - read

我正在嘗試讓孩子計數狀態等於未讀的地方。

我嘗試使用reference.child("Notification").orderbyChild("status").equalTo("unread"){然后我得到孩子數。

但是我沒有讓孩子們計數,因為我假設首先必須引用子鍵然后我如何讓孩子們計數?

由於您說您使用的是 Java,因此實現該目標的最簡單方法是:

DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference notificationRef = db.child("NotificationV2");
Query queryByStatus = notificationRef.orderByChild("unread").equalTo(true);
queryByStatus.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            DataSnapshot snapshot = task.getResult();
            long count = snapshot.getChildrenCount();
            Log.d("TAG", "count: " + count);
        } else {
            Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
        }
    }
});

logcat 中的結果將是您的查詢返回的孩子的確切數量。 所以請注意,解決這個問題的關鍵是DataSnapshot#getChildrenCount()方法的使用。

編輯:

如果您已將字段名稱從“狀態”更改為“未讀”,並將值更改為 boolean,並將名稱Notification更改為NotificationV2 ,請檢查我更新的代碼。 除此之外,我們看不到其他 5 個元素。 但是,如果所有其他元素都存在於完全相同的級別,那么上面的代碼肯定可以工作。

暫無
暫無

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

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