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将始终拥有最新记录.
基本上我想比较当前付款和先前付款的两个值,并显示它与用户的差异.
除非您在查询中专门订购文档,否则无法保证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)
不过要小心:多个文档,相同的时间戳,或者你期待的一个时间戳之间,可能意味着您会收到一个不同的文件比预期的,所以我不会靠这个来挑选具体文件.
| 归档时间: |
|
| 查看次数: |
5796 次 |
| 最近记录: |