firebase - 如何按'_createTime'对firestore文档进行排序?
问题描述
我正在使用带有 Admin SDK 的云 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')
没有工作。
解决方案
像您当前一样使用字段是正确的方法。您不能对元数据“,_createTime”进行排序。根据https://firebase.google.com/docs/firestore/manage-data/add-data#add_a_document:“如果您希望能够按创建日期对文档进行排序,则应将时间戳作为字段存储在文件。”
推荐阅读
- flutter - Flutter 创建不成功
- python - 3个嵌套循环:优化简单模拟以提高速度
- javascript - Highcharts 仪表在 Firefox 中未正确显示
- protractor - 使用 localStorage.clear() 时会话或 cookie 不会被清除;或 sessionStorage.clear(); 量角器黄瓜
- image - libv4l2:打开流时出错:设备上没有剩余空间 VIDIOC_STREAMON:设备上没有剩余空间
- google-bigquery - _TABLE_SUFFIX 字符串比较与整数
- ms-access - 如何从日期变量中删除秒的分数?
- c# - 在 Reactive Stream 上发布时出现 IndexOutOfRangeException
- java - 请求中带有json数据的resttemplate postForObject抛出带有404 null的RestClientException
- android - 进度对话框没有关闭,我无法更新用户个人资料