gpt4 book ai didi

android - startAfter 不在 Firestore android 中工作

转载 作者:行者123 更新时间:2023-12-05 00:21:02 41 4
gpt4 key购买 nike

我创建了一个类似应用程序的测验,其中一次提取 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 的分数后。

我再次打开相同的 Activity 并调用 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 之后的类型 是一个查询。

关于android - startAfter 不在 Firestore android 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53791952/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com