簡體   English   中英

如何從 firebase 數據庫中獲取隨機孩子?

[英]How get random child from firebase database?

我嘗試從我的 firebase 中獲取隨機孩子。 但我不能,我也嘗試了stackoverflow的許多想法,但仍然無法正常工作。 例如,我想從“Bahan Makanan Susu”中獲得隨機孩子,在獲得隨機孩子之后,我想顯示“kalori”的值。

這是我創建的數據庫

在此處輸入圖像描述

這是我目前的代碼

reff = FirebaseDatabase.getInstance().getReference();
reff.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull  DataSnapshot dataSnapshot) {
        String Sskal =dataSnapshot.child("Bahan Makanan Susu").child("3").child("Kalori").getValue().toString();

'child("3")' 在這里我手動創建,我想讓它隨機。 謝謝你希望你們都可以幫助我

嘗試這個:

reff = FirebaseDatabase.getInstance().getReference("Bahan Makanan Susu/3/Kalori");
reff.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull  DataSnapshot dataSnapshot) {
        String Sskal = dataSnapshot.getValue().toString();
        Log.i("Firebase", Sskal);
    }
    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) { 
        throw databaseError.toException(); 
    }
}

主要變化及注意點:

  • 此代碼僅從數據庫中讀取屬性,將指向該節點/屬性的整個路徑傳遞給getReference
  • 始終實現onCancelled ,因為它可以指出數據庫的訪問問題。 如果您遇到此異常,請搜索錯誤消息以了解如何處理它。
  • 如果這也沒有讀取任何值,您永遠無法讀取或寫入數據庫,並且您的數據庫位於美國以外的其他區域,請考慮重新下載您的google-services.json文件,或指定代碼中的getInstance("URL here")調用中的數據庫 URL。
  • 你真的不應該像這樣使用順序數字鍵。 它們是 Firebase 中的反模式,因為 SDK 試圖將它們解釋為 arrays。 有關這方面的更多信息,請參閱最佳實踐:Firebase 中的 Arrays

嘗試這個:

reff = FirebaseDatabase.getInstance().getReference();
reff.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull  DataSnapshot 
dataSnapshot) {
        Random r = new Random();
        int total = reff.child("Bahan Makanan Susu").getChildrenCount();
        String Sskal =dataSnapshot.child("Bahan Makanan 

蘇蘇").child(r.nextInt(total)).child("Kalori").getValue().toString(); });

你必須每次都做一次檢查,這樣一個孩子就不會被重復,但我希望你能夠讓它發揮作用。

暫無
暫無

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

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