簡體   English   中英

如何管理數百個 firebase 查詢

[英]How to manage 100s of firebase queries

我有一個 Android 應用程序,與任何其他 android 應用程序一樣,我必須填寫要從 Firebase 實時讀取數據的數據,現在我已經注意到每次查詢都增長到超過 100 條數據。將 ValueEventListeners 添加到引用中。 為了避免使用冗長的引用,我創建了一個 static 常量 class 來存儲所有引用。 例子

public class Constants {


    public static final String THUMB_URL= "https://www.qualcomm.com/sites/ember/files/styles/scale_480/public/components/two-column-hdi/side/blue-ai-inception-badge-updated-2.png?itok=cOkbug7y";

    public static final FirebaseUser CURR_USER= FirebaseAuth.getInstance().getCurrentUser();
    public static final String UID= FirebaseAuth.getInstance().getCurrentUser().getUid();

    public static final DatabaseReference ROOT_REF=FirebaseDatabase.getInstance().getReference();
    public static final DatabaseReference QUIZ_REF=ROOT_REF.child("quizzes");
    public static final DatabaseReference QUIZ_HOF_REF=QUIZ_REF.child("hof");
    public static final DatabaseReference QUIZ_HOF_Q_REF=QUIZ_HOF_REF.child("questions");
    public static final DatabaseReference QUIZ_HOF_TOTQ_REF=QUIZ_HOF_REF.child("totalQuestions");

    public static final DatabaseReference SCORECARD_REF=ROOT_REF.child("scorecards");
    public static final DatabaseReference SCORECARD_UID_REF=SCORECARD_REF.child(UID);

    //Similar declarations   
}

現在要進行查詢,我創建了一個 Class 和 static 函數,它利用了這些引用。 例子

 public final class MyUtilsApp  {

        public static void queryByQuestionNumber(String quizName, String questionNumber) {

            Query query = Constants.QUIZ_REF.child(quizName).child("questions")
                    .orderByChild("questionNumber").equalTo(questionNumber).limitToFirst(1);
            query.addChildEventListener(new ChildEventListener() {..});
        }

        public static void queryAllQuestions(String quizName){

            Query query=Constants.QUIZ_REF.child(quizName).child("questions").orderByChild("questionNumber");
            query.addChildEventListener(new ChildEventListener() {..});
        }

        public static void upgradeScore(String quizName){
            DatabaseReference reference=Constants.SCORECARD_UID_REF.child("score");

            reference.addListenerForSingleValueEvent(new ValueEventListener(){...});

        }
//Similar Functions
}

現在回到這個問題,在管理 Android 中的查詢時,這到底是對還是錯。 特別是當查詢增長超過 50 時?

如果你使用這個沒有問題,但我建議使用 AsyncTask() 以確保所有查詢不會同時被查詢!

暫無
暫無

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

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