簡體   English   中英

startAfter 不在 Firestore android 中工作

[英]startAfter not working in Firestore android

我創建了一個類似應用程序的測驗,其中一次提取 10 個問題。 如果用戶得到 8 分(滿分 10 分),那么我將獲取接下來的 10 個問題。 但是startAfter總是給出相同的響應。

val questionCollectionRef = db.collection("questionCollection")
        ///.whereArrayContains("tags", tagName)
        .orderBy("questionID", Query.Direction.DESCENDING);
val id = SharedPrefs(this@McqActivity).read(OLD_DOCUMENT_ID, "")

if(id.isNotEmpty()){
    //questionCollectionRef.whereLessThan("questionID",id) //also tried for whereGreaterThan
    questionCollectionRef.startAfter(id);
    Log.v("startAfter","start After : " + id + "" );
}
questionCollectionRef.limit(10).get()
        //fixme  also orderBy date So user can see latest question first
        .addOnSuccessListener { querySnapshot ->
            if (querySnapshot.isEmpty()) {
                Log.d(TAG, "onSuccess: LIST EMPTY")
            } else {
                val questionList = querySnapshot.toObjects(QuestionBO::class.java)

                questionList.forEach { questionItem ->
                    resultList.add(ResultBO(questionItem))
                }

                if (resultList.size > 0) {
                    refreshQuestionWithData()
                }
            }
        }
        .addOnFailureListener { exception ->
            exception.printStackTrace()
        }

這段代碼是在 Activity 中編寫的。獲得 8 以上的分數后。

我再次打開相同的活動並調用questionCollectionRef.startAfter但 Activity 中仍然顯示相同的問題

當您調用startAfter() (或任何其他查詢構建方法)時,它會返回一個新的查詢對象。 所以你需要保留對該對象的引用:

var questionCollectionQuery = db.collection("questionCollection")
        .orderBy("questionID", Query.Direction.DESCENDING);

val id = SharedPrefs(this@McqActivity).read(OLD_DOCUMENT_ID, "")
if(id.isNotEmpty()){
    questionCollectionQuery = questionCollectionQuery.startAfter(id);
    Log.v("startAfter","start After : " + id + "" );
}

questionCollectionQuery.limit(10).get()...

我還將questionCollectionRef重命名為questionCollectionQuery ,因為orderBystartAfterlimit之后的類型是一個查詢。

暫無
暫無

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

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