由于firestore还不是很老,所以在某些情况下有很小的帮助。
我正试图从 Firestore 获得第二个记录,但它正在获得第一个记录。我知道这是错误的查询:
db.collection("batches")
.where('added_at', "<", paymentData.added_at) //Here paymentData is last record
.limit(1).get().then(function(prevSnapshot){
})
例如我有3条记录
A. added_at: 1 Jan, 2017
B. added_at: 2 Jan, 2017
C. added_at: 3 Jan, 2017
我现在在paymentData中有C
,我想要记录B
。但它正在获得记录A
。
我如何获得第二次最后记录?
编辑:
每条记录的时间戳总是比上一张更新(即使它可以是1分钟。例如之前的27 Jan, 2017 5:20 PM
和新的27 Jan, 2017 5:21 PM
)
payData将始终具有最新记录。
基本上我想比较当前付款和以前的付款的两个值,并将其显示给用户。
答案 0 :(得分:7)
除非您具体,否则无法保证Firestore文档的顺序。为此,您需要使用orderBy()
方法。
例如,您可以指定数据库按added_at
字段按降序对文档进行排序,该字段应返回您想要的结果B
:
db.collection("batches")
.orderBy('added_at', 'desc') // Order documents by added_at field in descending order
.where('added_at', "<", paymentData.added_at)
.limit(1).get().then(function(prevSnapshot){
// ...
})
请注意:具有相同时间戳的多个文档或者您期望的时间戳之间的时间戳可能意味着您将收到与预期不同的文档,因此我不会依赖此文档来选择特定文档