【发布时间】:2020-01-15 21:39:36
【问题描述】:
我的 Firestore 数据库中保存了一份优惠/交易列表。我想按 desc 顺序获取按折扣排序的前 3 个交易,即折扣最高的交易首先出现,然后是下一个最高的交易,依此类推。我将它们分成 3 段来获取。
我正在尝试使用 android 代码来实现相同的目标。因此,折扣为 55、44、28 的前 3 个元素应该先出现,然后是 27、27、21,最后是 19,4。
class ContentGenerationActivityV1 : AppCompatActivity() {
var lastDocument : DocumentSnapshot?= null
lateinit var filterQuery: Query
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_content_generation)
val doc = FirebaseFirestore.getInstance().collection("steal-deals").document("deals")
filterQuery = doc.collection(getTodayTimeStamp().toString())
.orderBy("discount", Query.Direction.DESCENDING)
filterFetchButton.setOnClickListener {
if(lastDocument == null){
fetchFirstFew()
} else {
fetchMore()
}
}
}
//Get first 3 elements
fun fetchFirstFew(){
Log.d("N/W CALL ::", "FIRST")
filterQuery.limit(3) .get()
.addOnSuccessListener { result ->
lastDocument = result.documents.last()
for (document in result) {
Log.d("DEAL :: ", "${document.id} => ${document.data}")
}
}
}
//Get the next 3 elements
fun fetchMore(){
Log.d("N/W CALL ::", "SECOND")
filterQuery.startAfter(lastDocument)
.limit(3).get()
.addOnSuccessListener { result ->
lastDocument = result.documents.last()
for (document in result) {
Log.d("DEAL :: ", "${document.id} => ${document.data}")
}
}
}
请指导我实现同样的目标。
【问题讨论】:
-
签出this。在 Java 中,但我想你会明白的。这是一个简单的例子。
-
代码乍一看还不错。您可能想在
fetchMore中设置一个断点并在调试器中运行它,以查看lastDocument是否具有正确的值。 -
我检查了两次
lastDocument值,我可以确认该值是正确的。 -
您找到解决方案了吗?我也有同样的问题
标签: android firebase kotlin google-cloud-firestore