从firestore DB,javascript获取第二个最后记录

Nom*_*Ali 4 javascript firebase google-cloud-firestore

由于firestore还不是很老,所以在某些情况下有很小的帮助.

我试图从Firestore获得第二个记录,但它正在获得第一个.我知道这是错误的查询:

db.collection("batches")
  .where('added_at', "<", paymentData.added_at) //Here paymentData is last record
  .limit(1).get().then(function(prevSnapshot){
})
Run Code Online (Sandbox Code Playgroud)

例如,我有3条记录

A. added_at: 1 Jan, 2017
B. added_at: 2 Jan, 2017
C. added_at: 3 Jan, 2017
Run Code Online (Sandbox Code Playgroud)

我现在C在paymentData中,我想要记录B.但它正在获得记录A.

我如何获得第二个最后记录

编辑:

每条记录的时间戳总是比前一个更新(即使它可以是1分钟.例如,前一个27 Jan, 2017 5:20 PM和新的27 Jan, 2017 5:21 PM)

而paymentData将始终拥有最新记录.

基本上我想比较当前付款先前付款的两个值,并显示它与用户的差异.

Gri*_*orr 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){
          // ...
  })
Run Code Online (Sandbox Code Playgroud)

不过要小心:多个文档,相同的时间戳,或者你期待的一个时间戳之间,可能意味着您会收到一个不同的文件比预期的,所以我不会靠这个来挑选具体文件.