如何按'_createTime'对firestore文档进行排序?
Posted
技术标签:
【中文标题】如何按\'_createTime\'对firestore文档进行排序?【英文标题】:How to sort firestore documents by '_createTime'?如何按'_createTime'对firestore文档进行排序? 【发布时间】:2020-08-06 05:54:23 【问题描述】:我正在使用带有 Admin SDK 的 Cloud Firebase 功能从我的 Firestore 集合中获取最新的文档。排序基于timestamp
字段。该值在文档编写时明确提供。
获取代码:
const fetchedTransaction = (await transactionsColRef.orderBy('timestamp', 'desc')
.limit(1).get()).docs[0]
console.log(fetchedTransaction)
console.log('Transaction created at', fetchedTransaction.createTime.toDate())
console.log
语句打印以下输出。看看底部的_createTime
。
输出:
QueryDocumentSnapshot
_fieldsProto:
coinsToday: doubleValue: 0.017, valueType: 'doubleValue' ,
timestamp: timestampValue: [Object], valueType: 'timestampValue'
,
_ref: DocumentReference
_firestore: Firestore
_settings: [Object],
_settingsFrozen: true,
_serializer: [Serializer],
_projectId: 'hidden',
registeredListenersCount: 0,
_lastSuccessfulRequest: 1596692513232,
_backoffSettings: [Object],
_preferTransactions: false,
_clientPool: [ClientPool]
,
_path: QualifiedResourcePath
segments: [Array],
projectId: 'hidden',
databaseId: '(default)'
,
_converter:
toFirestore: [Function: toFirestore],
fromFirestore: [Function: fromFirestore]
,
_serializer: Serializer
createReference: [Function (anonymous)],
allowUndefined: false
,
_readTime: Timestamp _seconds: 1596692513, _nanoseconds: 164886000 ,
_createTime: Timestamp _seconds: 1596692167, _nanoseconds: 68734000 ,
_updateTime: Timestamp _seconds: 1596692167, _nanoseconds: 68734000
Transaction created at 2020-08-06T05:36:07.069Z
我正在寻找一种通过_createTime
订购文档的方法,而不是每次都编写timestamp
值。使用orderBy('_createTime')
或orderBy('createTime')
无效。
【问题讨论】:
【参考方案1】:按照您当前的做法使用字段是正确的方法。您不能对元数据“,_createTime”进行排序。根据https://firebase.google.com/docs/firestore/manage-data/add-data#add_a_document:“如果您希望能够按创建日期对文档进行排序,则应将时间戳作为字段存储在文档中。”
【讨论】:
以上是关于如何按'_createTime'对firestore文档进行排序?的主要内容,如果未能解决你的问题,请参考以下文章
我们如何使用 Angular 按 TimeStamp 数据类型对 Firebase Firestore 数据进行排序?
Flutter 使用 Streambuilder 对数据 Firestore 进行排序
如何按字段值(即“原因”字段名称及其值可能是“垃圾邮件”、“裸露”等)对 Firebase Firestore 数据进行排序